我试图了解 jstat
的输出以及 Java 的 GarbageCollectorMXBean.getCollectionCount()
提供的 API。
将 jstat
与 -gcutil
选项结合使用可提供名为“FGC - 完整 GC 事件数”的统计信息。这个数字到底代表什么?它是否表示相应垃圾收集器收集的对象总数,如在该样本时间段内在次要和主要收集中清除的对象总数?如果不是,那代表什么?
来到 GarbageCollectorMXBean.getCollectionCount()
,它是否也表示相同的东西 - 相应 GC 收集的对象总数。
如果有人能更好地理解上述内容,那就太好了!谢谢。
最佳答案
jstat
的FGC
列显示“完整 GC 事件”的数量。这基本上意味着自 JVM 启动以来执行的完整垃圾收集次数。它没有说明收集到的对象的数量。
jstat
的 YGC
列显示了相同的指标,但用于年轻代集合。
GarbageCollectorMXBean.getCollectionCount()
指标为您提供自 JVM 启动以来使用该特定垃圾收集器执行的收集次数。
通常,jstat
的 FGC
列和老年代收集器的 GarbageCollectorMXBean.getCollectionCount()
会给你相同的数字。但是,存在一些细微差别。例如,如果您使用 Concurrent Mark Sweep 收集器,每个 Full GC 将被计为 2 个“Full GC 事件”,由 jstat
计算,而 GarbageCollectorMXBean.getCollectionCount()
将将其视为一个集合。
关于java - 了解和比较 GarbageCollectorMXBean 和 jstat 实用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29408044/