近期檢視產品日誌,看到如下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....