我使用GarbageCollectorMXBean來獲取JVM Full GC CollectionCount 和CollectionTime。但是數據與jstat收集的數據( )不相等(但VisualVM的數據與jstat相同)。GarbageCollectorMXBean Full GC CollectionCount和CollectionTime
所以,我檢查了VisualVM的源代碼,研究它是如何工作的,並已經看到, VisualVM的還可以透過GarbageCollectorMXBean收集JVM完整的GC 數據。 爲什麼?
我爲java應用程序添加gc日誌(部分JVM參數是-XX:+ PrintGCDetails -verbose:GC -Xloggc:/home/yubaofu/work/debug/gc.log)。我讀了gc日誌,並看到完整的gc CollectionCount與jstat顯示的數據不相等。這是否意味着jstat full gc不僅是完整的gc?
VisualVM的VS jstat
VisualVM的全gc爲4
jstat是完整的GC也4
JConsole的VS jstat
JConsole的全gc爲2
jstat完整的GC是4
爲什麼然後不相等?
GC日誌VS jstat
GC日誌滿gc爲2
jstat完整的GC是4
我爲我的英文不好對不起,希望你能明白我的意思:)
我發現了同樣的缺點,並最終決定它並不重要,但它很好奇。 –
GarbageCollectorMXBean.getCollectionCount的javadoc表示它返回「返回發生的集合總數」。並沒有提到完整的(所以也會返回其他非全集合)。這會解釋差異嗎? –
@ Disco3是的,但每個gc名稱都有GarbageCollectorMXBean.so GarbageCollectorMXBean僅返回代表gc name是已發生的集合總數,而不是發生的總數集合。 – fuyou001