如何知道JVM当前是否正在执行GC?

时间:2018-06-25 11:29:14

标签: java garbage-collection jvm load-balancing

我有一个用例,如果该服务的JVM当前正在执行GC,则需要停止将请求发送到Java Restful服务。如何/哪种API可以帮助我找到这个?

2 个答案:

答案 0 :(得分:2)

有多种监视GC的方法,但唯一的区别是如何显示GC操作信息。 GC由JVM完成,并且由于GC监视工具会公开JVM提供的GC信息,因此无论您如何监视GC,您都将获得相同的结果。

根据访问界面的不同,GC监视方法可以分为 CUI GUI 。典型的CUI GC监视方法涉及使用单独的名为“ jstat”的CUI应用程序,或者在运行JVM时选择一个名为“ verbosegc”的JVM选项。

jstat 是HotSpot JVM中的监视工具。用于HotSpot JVM的其他监视工具是jps和jstatd。有时,您需要使用所有三个工具来监视Java应用程序。

- verbosegc 是运行Java应用程序时指定的JVM选项之一。尽管jstat可以监视任何未指定任何选项的JVM应用程序,但必须在开始时指定-verbosegc,因此可以将其视为不必要的选项(因为可以使用jstat代替)。

答案 1 :(得分:0)

您可能可以通过使用visualVM及其API来执行此操作。可视vm是GC流程的可视化。但它也有自己的API。 Visual VM