理解GC日志

有如下一段GC日志:


1.最前面的數(shù)字0.059,0.086代表GC發(fā)生的時間,這個數(shù)字的含義是從Java虛擬機啟動以來經(jīng)過的秒數(shù)。

2.GC日志開頭的"[GC"和"[Full GC"說明了這次垃圾收集發(fā)生的停頓類型,而不是來區(qū)分新生代GC還是老年代GC。如果有"Full",說明這次GC是發(fā)生了STW。(Allocation Failure?– 引起垃圾回收的原因. 本次GC是因為年輕代中沒有任何合適的區(qū)域能夠存放需要分配的數(shù)據(jù)結(jié)構(gòu)而觸發(fā)的.)

3."[DefNew","[Tenured","[Perm",表示GC發(fā)生的區(qū)域,這里顯示的區(qū)域名稱與使用的GC收集器是密切相關(guān)的,例如Serial收集器中新生代名為Default New Generation,所以顯示[DefNew。如果是ParNew收集器,新生代名稱就會變?yōu)閇ParNew,意為Parallel New?Generation,如果采用Parallel Scavenge收集器,那么它配套的新生代稱為PSYoungGen,老年代和永久代同理,名稱也是有由收集器決定。

4.后面方括號內(nèi)部的384k->64k(448k),含義是“GC前該內(nèi)存區(qū)域已經(jīng)使用容量->GC后該內(nèi)存區(qū)域已經(jīng)使用容量(該內(nèi)存區(qū)域總?cè)萘?”,方括號之外的384k->266k(1048512k)表示“GC前Java堆已經(jīng)使用量->GC后Java堆已經(jīng)使用量(Java堆總?cè)萘?”

5.“0.0009127 secs”表示GC所占用的時間

6."[Times: user=0.00 sys=0.00, real=0.00 secs]" 分別表示用戶態(tài)消耗的CPU時間,內(nèi)核態(tài)消耗的CPU時間,和操作開始到結(jié)束所經(jīng)歷過的墻鐘時間。CPU時間與墻鐘時間的的區(qū)別是,墻鐘時間包含各種非運算的等待耗時,如等待磁盤I/O;但當系統(tǒng)有多CPU或者多核的話,多線程操作會疊加這些CPU時間,所以如果看到,user或sys時間超過real時間也是完全正常的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容