1. 程式人生 > >GC日誌

GC日誌

打印 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 日誌文件的輸出路徑

在我做了如下的設置

技術分享

技術分享

我們取倒數第二條記錄分析一下各個字段都代表了什麽含義

  1. 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日誌