科普:教你如何看懂 JavaGC 日志
來源:https://url.cn/5cvXPfU
JVM GC 相關(guān)的參數(shù)
-XX:+PrintGC 輸出 GC 日志
-XX:+PrintGCDetails 輸出 GC 的詳細日志
-XX:+PrintGCTimeStamps 輸出 GC 的時間戳(以基準時間的形式)
-XX:+PrintGCDateStamps 輸出 GC 的時間戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+PrintHeapAtGC 在進行 GC 的前后打印出堆的信息
-Xloggc:D:/gc.log 日志文件的輸出路徑
示例
比如在某個應(yīng)用中,配置:
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:D:/gc.log
啟動后打印如下 GC 日志:
YongGC
2019-04-18T14:52:06.790+0800: 2.653: [GC (Allocation Failure) [PSYoungGen: 33280K->5113K(38400K)] 33280K->5848K(125952K), 0.0095764 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
含義:
2019-04-18T14:52:06.790+0800(當前時間戳): 2.653(應(yīng)用啟動基準時間): [GC (Allocation Failure) [PSYoungGen(表示 Young GC): 33280K(年輕代回收前大小)->5113K(年輕代回收后大?。?38400K(年輕代總大?。?] 33280K(整個堆回收前大?。?>5848K(整個堆回收后大?。?125952K(堆總大?。?, 0.0095764(耗時) secs] [Times: user=0.00(用戶耗時) sys=0.00(系統(tǒng)耗時), real=0.01(實際耗時) secs]
Full GC
2019-04-18T14:52:15.359+0800: 11.222: [Full GC (Metadata GC Threshold) [PSYoungGen: 6129K->0K(143360K)] [ParOldGen: 13088K->13236K(55808K)] 19218K->13236K(199168K), [Metaspace: 20856K->20856K(1069056K)], 0.1216713 secs] [Times: user=0.44 sys=0.02, real=0.12 secs]
含義:
2019-04-18T14:52:15.359+0800(當前時間戳): 11.222(應(yīng)用啟動基準時間): [Full GC (Metadata GC Threshold) [PSYoungGen: 6129K(年輕代回收前大?。?>0K(年輕代回收后大?。?143360K(年輕代總大?。?] [ParOldGen: 13088K(老年代回收前大?。?>13236K(老年代回收后大?。?55808K(老年代總大小))] 19218K(整個堆回收前大?。?>13236K(整個堆回收后大小)(199168K(堆總大?。?, [Metaspace: 20856K(持久代回收前大?。?>20856K(持久代回收后大小)(1069056K(持久代總大?。?], 0.1216713(耗時) secs] [Times: user=0.44(用戶耗時) sys=0.02(系統(tǒng)耗時), real=0.12(實際耗時) secs]
