了解和比较 GarbageCollectorMXBean 和 jstat 实用程序

Understanding and comparing GarbageCollectorMXBean and jstat utility

我正在尝试了解 jstat 的输出以及 Java 的 GarbageCollectorMXBean.getCollectionCount().

提供的 API

jstat-gcutil 选项一起使用可提供名为 'FGC - Number of full GC events' 的统计数据。这个数字到底代表什么?它是否表示相应垃圾收集器收集的对象总数,如在该样本时间段内在次要和主要收集中清除的对象总数?如果不是,那代表什么?

来到GarbageCollectorMXBean.getCollectionCount(),它是否也表示相同的东西-相应GC收集的对象总数。

如果有人能更好地理解以上内容,那就太好了!谢谢。

jstatFGC 列显示 "full GC events" 的数量。这基本上意味着自 JVM 启动以来执行的完整垃圾收集次数。它没有说明收集对象的数量。

jstatYGC 列显示相同的指标,但用于年轻代集合。

GarbageCollectorMXBean.getCollectionCount() 指标为您提供自 JVM 启动以来使用该特定垃圾收集器执行的收集次数。

一般来说,jstatFGC 列和终身代收集器的 GarbageCollectorMXBean.getCollectionCount() 列会给你相同的数字。但是,存在一些细微差别。例如,如果您使用 Concurrent Mark Sweep 收集器,则每个 Full GC 将按 jstat 计为 2 "Full GC events",而 GarbageCollectorMXBean.getCollectionCount() 将其计为单个收集。