GC日誌
阿新 • • 發佈:2017-07-22
打印 ctime 我們 tar 如果 art 用戶 cda src
JVM的GC日誌的主要參數包括如下幾個:
-XX:+PrintGC 輸出GC日誌
-XX:+PrintGCDetails 輸出GC的詳細日誌
-XX:+PrintGCTimeStamps 輸出GC的時間戳(以基準時間的形式)
-XX:+PrintGCDateStamps 輸出GC的時間戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+PrintHeapAtGC 在進行GC的前後打印出堆的信息
-Xloggc:../logs/gc.log 日誌文件的輸出路徑
在我做了如下的設置
我們取倒數第二條記錄分析一下各個字段都代表了什麽含義
- 5.617(時間戳): [GC(說明這次垃圾收集停頓的類型,如果是Full GC說明發生了Stop The World) 5.617(時間戳): [ParNew(使用ParNew作為年輕代的垃圾回收期): 43296K(年輕代垃圾回收前的大小)->7006K(年輕代垃圾回收以後的大小)(47808K)(年輕代的總大小), 0.0136826 secs(回收時間)] 44992K(堆區垃圾回收前的大小)->8702K(堆區垃圾回收後的大小)(252608K)(堆區總大小), 0.0137904 secs(回收時間)] [Times: user=0.03(Young GC用戶耗時) sys=0.00(Young GC系統耗時), real=0.02 secs(Young GC實際耗時)]
我們再對數據做一個簡單的分析
從最後一條GC記錄中我們可以看到 Young GC回收了 45278-6723=38555K的內存
Heap區通過這次回收總共減少了 46974-10551=36423K的內存。
38555-36423=2132K說明通過該次Young GC有2132K的內存被移動到了Old Gen,
我們來驗證一下
在最後一次Young GC的回收以前 Old Gen的大小為8702-7006=1696
回收以後Old Gen的內存使用為10551-6723=3828
Old Gen在該次Young GC以後內存增加了3828-1696=2132K 與預計的相符
GC日誌