WAS GC日誌native_stderr.log分析

 

我們可以通過添加JVM啟動參數 -verbose:gc 或者在管理控制台上勾選詳細垃圾回收選項來打印更詳細的GC日誌,缺省日誌記錄文件是native_stderr.log文件。

不同的GC策略,日誌內容會有所不同,以下是optthruput策略時,記錄的詳細GC日誌:
<af type=”tenured” id=”24″ timestamp=”Dec 31 14:51:48 2015″ intervalms=”494944.872″>

af(allocation fail):觸發垃圾回收的事件,af為分配失敗。如果是sys,則表示應用程序有顯示調用System.gc()方法,不建議使用顯示gc()方法,可以通過 -Xdisableexplicitgc參數屏蔽顯式GC

type=”tenured”:GC類型,tenured/長存區的收集,另一種情況nursery/嬰兒區收集

id=”24″:tenured區GC的次數,這是第24次tenured區的垃圾回收

timestamp=”Dec 31 14:51:48 2015″:GC發生的時間戳

intervalms=”494944.872″:距離上一次GC的時間

<minimum requested_bytes=”16944″ />

申請的堆大小為16944byte,垃圾收集並分配後,freebytes可能下降超過這個大小。原因是空閑列表可能會被丟棄或線程本地堆(TLH)刷新

<time exclusiveaccessms=”0.059″ meanexclusiveaccessms=”0.059″ threads=”0″ lastthreadtid=”0x0000000017093E00″ />

exclusiveaccessms=”0.059″:準備GC前花費的時間0.059ms

<refs soft=”2363″ weak=”12244″ phantom=”774″ dynamicSoftReferenceThreshold=”9″ maxSoftReferenceThreshold=”32″ />

refs:提供關於java對象引用的信息

soft=”2363″:2363個SoftReference/軟引用對象。最先處理軟引用對象,如果內存空間足夠,就不會回收軟引用對象

weak=”12244″:12244個WeakReference/弱引用對象。軟引用對象處理完後,處理弱引用對象

phantom=”774″:774個PhantomReference/虛引用對象。弱引用對象處理完後,處理虛引用對象

dynamicSoftReferenceThreshold=”9″:軟引用對象在被回收前可以生存的GC周期,此值會動態調整,如果堆空間使用率很高,可能會降低此閾值

maxSoftReferenceThreshold=”32″:軟引用對象在被回收前可以生存的最大GC周期,32次

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ GC前堆空間使用情況↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

<tenured freebytes=”10241336″ totalbytes=”64998400″ percent=”15″ >

freebytes=”10241336″:空閑空間10241336byte

totalbytes=”64998400″:總空間大小為64998400byte

percent=”15″:空閑空間約佔總空間大小的15%

<soa freebytes=”9781560″ totalbytes=”64538624″ percent=”15″ />

soa:小對象分配區域;在分配對象時,首先嘗試在小對象區域中進行分配。如果找不到足夠大小的可用項來滿足分配,並且請求的大小等於或大於64KB,那麼將再次在loa中嘗試分配。如果請求大小小於64KB或者loa中沒有足夠的連續空間,那麼將觸發分配故障。如果小對象區域中的可用自由空間量遠遠大於分配請求大小,但是還無法滿足請求,則表明堆中都是碎片。

freebytes=”9781560″:空閑空間9781560byte

totalbytes=”64538624″:總空間64538624byte

percent=”15″:空閑空間約佔總空間大小的15%

<loa freebytes=”459776″ totalbytes=”459776″ percent=”100″ />

loa:大對象分配區域;大對象區域是堆中保留給大對象分配的一小片區域。垃圾收集器會根據loa空間的使用情況來進行擴展或收縮

freebytes=”9781560″:空閑空間9781560byte

totalbytes=”64538624″:總空間64538624byte

percent=”15″:空閑空間約佔總空間大小的100%,即未使用

</tenured>

<pending-finalizers finalizable=”592″ reference=”5″ classloader=”0″ />

pending-finalizers:表示可終結隊列的當前狀態

<gc type=”global” id=”26″ totalid=”26″ intervalms=”494945.222″>

type=”global”:global/全局收集,另一種情況為scavenger/清掃

id=”26″:這是第26次發生全局GC

totalid=”26″:GC總共發生了26次

intervalms=”494945.222″:此次GC花費了494945.222ms

<finalization objectsqueued=”592″ />

<timesms mark=”95.729″ sweep=”1.073″ compact=”0.000″ total=”96.912″ />

mark=”95.729″:標記花費的時間95.729ms

sweep=”1.073″:清掃花費的時間1.073ms

compact=”0.000″:壓縮花費的時間 0.000ms,未發生壓縮

total=”96.912″:此次GC共花費了96.912ms

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ GC後堆空間使用情況↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

<tenured freebytes=”22360600″ totalbytes=”64998400″ percent=”34″ >

freebytes=”22360600″:空閑空間22360600byte

totalbytes=”64998400″:總空間64998400byte

percent=”34″:空閑空間約佔總空間大小的34%

<soa freebytes=”21966360″ totalbytes=”64604160″ percent=”34″ />

soa:小對象分配區域;

freebytes=”21966360″:空閑空間21966360byte

totalbytes=”64604160″:總空間64604160byte

percent=”34″:空閑空間約佔總空間大小的34%

<loa freebytes=”394240″ totalbytes=”394240″ percent=”100″ />

soa:大對象分配區域;

freebytes=”394240″:空閑空間394240byte

totalbytes=”394240″:總空間394240byte

percent=”100″:空閑空間100%

</tenured>

</gc>

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓滿足分配後堆空間使用情況↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

<tenured freebytes=”22343656″ totalbytes=”64998400″ percent=”34″ >

<soa freebytes=”21949416″ totalbytes=”64604160″ percent=”33″ />

<loa freebytes=”394240″ totalbytes=”394240″ percent=”100″ />

</tenured>

<refs soft=”2354″ weak=”12073″ phantom=”774″ dynamicSoftReferenceThreshold=”11″ maxSoftReferenceThreshold=”32″ />

<pending-finalizers finalizable=”592″ reference=”5″ classloader=”0″ />

<time totalms=”97.038″ />

</gc>

以下文章點擊率最高

Loading…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營