首页 畅享游戏,快乐生活!
手机版
扫描查看手机站

高级强制GC是怎么玩的10种?强制gc是什么意思

时间:2023-11-17 23:37:56 编辑:

大家好,感谢邀请,今天来为大家分享一下高级强制GC是怎么玩的10种的问题,以及和强制gc是什么意思的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

随着堆利用率接近100%并且不可避免的OutOfMemoryError可能导致生产JVM崩溃,倾向于实时Java应用程序的DevOps专业人员不会要求一种机制来强制Java垃圾收集并释放几兆字节的内存。

不幸的是,这种立即释放内存的愿望肯定是徒劳的,因为在Java中没有办法强制进行垃圾收集(GC)。但是,这里有五种策略可以让Java虚拟机(JVM)确定任务的优先级。

1.调用System.gc()

开发人员可以在其代码中的任何位置调用System.gc()来指示JVM优先考虑垃圾收集。当开发人员调用此方法时——JVM上没有极端负载——JavaGC循环将在几秒钟内发生。

System.gc();

2.调用Runtime.getRuntime().gc()

另一种选择是使用Runtime.getRuntime().gc()调用。这是JDK为想要强制进行Java垃圾收集的开发人员提供的第二个功能。Runtime.getRuntime().gc()调用实际上只是在后台调用方法System.gc()。结果,这两个方法调用是完全一样的。

Runtime.getRuntime().gc();

3.使用jmap强制GC

Java内存映射(JMAP)实用程序有一个打印Java堆直方图的方法。jmap命令的一个副作用是,当它被调用时,它会强制执行垃圾收集例程。但是,这并不是强制进行Java垃圾收集的万无一失的方法。如果JVM很忙并且无法执行GC循环,则该命令将出错。

$jmap-histo:live7544

Figure1您可以尝试使用JDK的JMAP和JCMD实用程序强制执行Java垃圾收集。

4.使用jcmd的命令行JavaGC

Java诊断命令(JCMD)是另一个JDK实用程序,如果JVM可以安全地安排stop-the-world暂停,它将触发垃圾收集例程。如果不是,此命令将以与jmap实用程序相同的方式出错。

$jcmd7544GC.run

5.使用JConsole或JavaMissionControl

JConsole和JavaMissionControl都提供了与Java诊断命令实用程序交互的用户友好界面,可用于强制执行Java垃圾收集。JConsole监控工具在其内存管理页面上提供了一个按钮,上面写着RunGarbageCollection。JavaMissionControl允许开发人员选择任何jcmd开关——包括GC.run——并通过单击按钮执行命令。

但是,这些工具在Java垃圾收集方面并没有做任何独特的事情。他们只是在幕后调用jcmd实用程序。

Figure2JavaMissionControl和JConsole都有可视化工具,允许您强制执行JavaGC。

如何强制Java垃圾回收

虽然开发人员永远不能真正强制Java垃圾收集,但有一些方法可以让JVM优先考虑内存管理功能。回顾一下,尝试强制执行Java垃圾收集的五种方法是:

调用System.gc()命令。调用getRuntime().gc()命令。使用jmap命令。使用jcmd命令。使用JConsole或JavaMissionControl。

高级强制GC是怎么玩的10种的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于强制gc是什么意思、高级强制GC是怎么玩的10种的信息别忘了在本站进行查找哦。

热门文章

推荐专题

更多>>

游戏推荐

更多>>