大家好,感谢邀请,今天来为大家分享一下高级强制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强制GCJava内存映射(JMAP)实用程序有一个打印Java堆直方图的方法。jmap命令的一个副作用是,当它被调用时,它会强制执行垃圾收集例程。但是,这并不是强制进行Java垃圾收集的万无一失的方法。如果JVM很忙并且无法执行GC循环,则该命令将出错。
$jmap-histo:live7544
Figure1您可以尝试使用JDK的JMAP和JCMD实用程序强制执行Java垃圾收集。
4.使用jcmd的命令行JavaGCJava诊断命令(JCMD)是另一个JDK实用程序,如果JVM可以安全地安排stop-the-world暂停,它将触发垃圾收集例程。如果不是,此命令将以与jmap实用程序相同的方式出错。
$jcmd7544GC.run
5.使用JConsole或JavaMissionControlJConsole和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种的信息别忘了在本站进行查找哦。