JVM GC日誌樣例解讀

2022-06-23 03:39:13 字數 2904 閱讀 5945

近期檢視產品日誌,看到如下gc日誌,收集整理如下

2019-09-29t06:01:00.041+0800: 1310458.865: [gc (allocation failure) 2019-09-29t06:01:00.041+0800: 1310458.866: [parnew: 366307k->2255k(386880k), 0.0214515 secs] 1016409k->652361k(1369920k), 0.0227310 secs] [times: user=0.15 sys=0.00, real=0.02 secs] 

heap after gc invocations=4674 (full 3):

par new generation total 386880k, used 2255k [0x00000000ab000000, 0x00000000c4000000, 0x00000000c4000000)

eden space 364160k, 0% used [0x00000000ab000000, 0x00000000ab000000, 0x00000000c13a0000)

from space 22720k, 9% used [0x00000000c13a0000, 0x00000000c15d3c00, 0x00000000c29d0000)

to space 22720k, 0% used [0x00000000c29d0000, 0x00000000c29d0000, 0x00000000c4000000)

concurrent mark-sweep generation total 983040k, used 650106k [0x00000000c4000000, 0x0000000100000000, 0x0000000100000000)

metaspace used 386387k, capacity 391928k, committed 392064k, reserved 1390592k

class space used 49137k, capacity 50188k, committed 50304k, reserved 1048576k

}{heap before gc invocations=4674 (full 3):

par new generation total 386880k, used 366415k [0x00000000ab000000, 0x00000000c4000000, 0x00000000c4000000)

eden space 364160k, 100% used [0x00000000ab000000, 0x00000000c13a0000, 0x00000000c13a0000)

from space 22720k, 9% used [0x00000000c13a0000, 0x00000000c15d3c00, 0x00000000c29d0000)

to space 22720k, 0% used [0x00000000c29d0000, 0x00000000c29d0000, 0x00000000c4000000)

concurrent mark-sweep generation total 983040k, used 650106k [0x00000000c4000000, 0x0000000100000000, 0x0000000100000000)

metaspace used 386387k, capacity 391928k, committed 392064k, reserved 1390592k

class space used 49137k, capacity 50188k, committed 50304k, reserved 1048576k

todo:結合如下內容對上述日誌進行解讀

參考外網的解讀

[gc (allocation failure) [parnew: 367523k->1293k(410432k), 0.0023988 secs] 522739k->156516k(1322496k), 0.0025301 secs] [times: user=0.04 sys=0.00, real=0.01 secs]

字段說明

gc表明進行了一次垃圾**,前面沒有full修飾,表明這是一次minor gc,注意它不表示只gc新生代,並且現有的不管是新生代還是老年代都會stw(stop the world。

allocation failure:

表明本次引起gc的原因是因為在年輕代中沒有足夠的空間能夠儲存新的資料了。

parnew

表明本次gc發生在年輕代並且使用的是parnew垃圾收集器。parnew是乙個serial收集器的多執行緒版本,會使用多個cpu和執行緒完成垃圾收集工作(預設使用的執行緒數和cpu數相同,可以使用-xx:parallelgcthreads引數限制)。該收集器採用複製演算法**記憶體,期間會停止其他工作執行緒,即stop the world。

367523k->1293k(410432k)

gc前該記憶體區域(這裡是年輕代)使用容量,gc後該記憶體區域使用容量,該記憶體區域總容量。

0.0023988 secs

該記憶體區域gc耗時,單位是秒

522739k->156516k(1322496k)

三個引數分別為:堆區垃圾**前的大小,堆區垃圾**後的大小,堆區總大小。

0.0025301 secs

該記憶體區域gc耗時,單位是秒

[times: user=0.04 sys=0.00, real=0.01 secs]

分別表示使用者態耗時,核心態耗時和總耗時

1. gceasy(優選)

需將本地日誌(原始日誌或壓縮包)上傳到**,由**提供分析各種分析報表。

2. gcviewer

解讀Apache日誌

解讀apache日誌 當你一步步地看到這裡的時候,相信你的www站點已經建好,並且已經在 internet上展現出來了。這時你可能就會關心誰造訪過你的站點,或者想知道 你的apache伺服器 現在的執行狀態與效能如何。下面我們一起通過解讀apache 的日誌來實現這個偉大的願望。一 盯著apache...

Apache日誌解讀

apache的日誌,記錄了apache所有的活動記錄,如果apache的安裝方式為預設安裝,則伺服器一執行就會有兩個日誌檔案生成,這兩個日誌檔案為access log 和 error log,預設放在logs資料夾下。下面是access log日誌中乙個典型的記錄,這些內容有7項構成。第四項 請求的...

protobuf c應用樣例

autogen.sh configure make make install 根據協議格式生成原始碼與標頭檔案 amessage.proto 檔案內容如下 message amessage 根據amessage.proto 生成c語言標頭檔案與原始碼 protoc c c out amessage....