JVM 技術(shù)詳解:GC 日志解讀與分析(實(shí)例分析上篇)

在 JDK 9 之后的版本中悲雳,啟動(dòng)參數(shù)有一些變化蚀浆,繼續(xù)使用原來(lái)的參數(shù)配置可能會(huì)在啟動(dòng)時(shí)報(bào)錯(cuò)缀程。不過(guò)也不用擔(dān)心搜吧,如果碰到,一般都可以從錯(cuò)誤提示中找到對(duì)應(yīng)的處置措施和解決方案杨凑。

例如 JDK 11 版本中打印 info 級(jí)別 GC 日志的啟動(dòng)腳本:

# JDK 11 環(huán)境赎败,輸出 info 級(jí)別的 GC 日志
java -Xms512m -Xmx512m
-Xlog:gc*=info:file=gc.log:time:filecount=0
demo.jvm0204.GCLogAnalysis

從 JDK 9 開(kāi)始,可以使用命令 java -Xlog:help 來(lái)查看當(dāng)前 JVM 支持的日志參數(shù)蠢甲,本文不進(jìn)行詳細(xì)的介紹僵刮,有興趣的同學(xué)可以查看 JEP 158: Unified JVM LoggingJEP 271: Unified GC Logging

另外鹦牛,JMX 技術(shù)提供了 GC 事件的通知機(jī)制搞糕,監(jiān)聽(tīng) GC 事件的示例程序我們會(huì)在《應(yīng)對(duì)容器時(shí)代面臨的挑戰(zhàn)》這一章節(jié)中給出。

但很多情況下 JMX 通知事件中報(bào)告的 GC 數(shù)據(jù)并不完全曼追,只是一個(gè)粗略的統(tǒng)計(jì)匯總窍仰。

GC 日志才是我們了解 JVM 和垃圾收集器最可靠和全面的信息,因?yàn)槔锩姘撕芏嗉?xì)節(jié)礼殊。再次強(qiáng)調(diào)驹吮,分析 GC 日志是一項(xiàng)很有價(jià)值的技能,能幫助我們更好地排查性能問(wèn)題晶伦。

下面我們通過(guò)實(shí)際操作來(lái)分析和解讀 GC 日志碟狞。

Serial GC 日志解讀

關(guān)于串行垃圾收集器的介紹,請(qǐng)參考前面的文章:《常見(jiàn) GC 算法介紹》婚陪。

首先族沃,為了打開(kāi) GC 日志記錄,我們使用下面的 JVM 啟動(dòng)參數(shù)如下:

# 請(qǐng)注意命令行啟動(dòng)時(shí)沒(méi)有換行泌参,此處是手工排版
java -XX:+UseSerialGC
-Xms512m -Xmx512m
-Xloggc:gc.demo.log
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
demo.jvm0204.GCLogAnalysis

讓我們看看 Serial GC 的垃圾收集日志脆淹,并從中提取信息。

啟用串行垃圾收集器沽一,程序執(zhí)行后輸出的 GC 日志類(lèi)似這樣(為了方便大家閱讀盖溺,已手工折行):

Java HotSpot(TM) 64-Bit Server VM (25.162-b12) ......
Memory: 4k page,physical 16777216k(1551624k free)
CommandLine flags:
  -XX:InitialHeapSize=536870912 -XX:MaxHeapSize=536870912
  -XX:+PrintGC -XX:+PrintGCDateStamps
  -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
  -XX:+UseCompressedClassPointers -XX:+UseCompressedOops
  -XX:+UseSerialGC
2019-12-15T15:18:36.592-0800: 0.420:
  [GC (Allocation Failure)
    2019-12-15T15:18:36.592-0800: 0.420:
    [DefNew: 139776K->17472K(157248K)铣缠,0.0364555 secs]
    139776K->47032K(506816K)烘嘱,
    0.0365665 secs]
  [Times: user=0.02 sys=0.01,real=0.03 secs]
......
2019-12-15T15:18:37.081-0800: 0.908:
  [GC (Allocation Failure)
    2019-12-15T15:18:37.081-0800: 0.908:
    [DefNew: 156152K->156152K(157248K)攘残,0.0000331 secs]
    2019-12-15T15:18:37.081-0800: 0.908:
    [Tenured: 299394K->225431K(349568K)拙友,0.0539242 secs]
    455546K->225431K(506816K)为狸,
    [Metaspace: 3431K->3431K(1056768K)]歼郭,
    0.0540948 secs]
  [Times: user=0.05 sys=0.00,real=0.05 secs]

日志的第一行是 JVM 版本信息辐棒,第二行往后到第一個(gè)時(shí)間戳之間的部分,展示了內(nèi)存分頁(yè)谈况、物理內(nèi)存大小陷虎,命令行參數(shù)等信息,這部分前面介紹過(guò)鲫竞,不在累述。

仔細(xì)觀(guān)察逼蒙,我們發(fā)現(xiàn)在這段日志中發(fā)生了兩次 GC 事件从绘,其中一次清理的是年輕代,另一次清理的是整個(gè)堆內(nèi)存是牢。讓我們先來(lái)分析前一次年輕代 GC 事件僵井。

Minor GC 日志分析

這次年輕代 GC 事件對(duì)應(yīng)的日志內(nèi)容:

2019-12-15T15:18:36.592-0800: 0.420:
  [GC (Allocation Failure)
    2019-12-15T15:18:36.592-0800: 0.420:
    [DefNew: 139776K->17472K(157248K),0.0364555 secs]
    139776K->47032K(506816K)驳棱,
    0.0365665 secs]
  [Times: user=0.02 sys=0.01批什,real=0.03 secs]

從中可以解讀出這些信息:

還有 93% 的精彩內(nèi)容
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
支付 ¥19.99 繼續(xù)閱讀
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市社搅,隨后出現(xiàn)的幾起案子驻债,更是在濱河造成了極大的恐慌,老刑警劉巖形葬,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件合呐,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡笙以,警方通過(guò)查閱死者的電腦和手機(jī)合砂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)源织,“玉大人翩伪,你說(shuō)我怎么就攤上這事√赶ⅲ” “怎么了缘屹?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)侠仇。 經(jīng)常有香客問(wèn)我轻姿,道長(zhǎng),這世上最難降的妖魔是什么逻炊? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任互亮,我火速辦了婚禮,結(jié)果婚禮上余素,老公的妹妹穿的比我還像新娘豹休。我一直安慰自己,他們只是感情好桨吊,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布威根。 她就那樣靜靜地躺著凤巨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪洛搀。 梳的紋絲不亂的頭發(fā)上敢茁,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音留美,去河邊找鬼彰檬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛谎砾,可吹牛的內(nèi)容都是我干的僧叉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼棺榔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼瓶堕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起症歇,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤郎笆,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后忘晤,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體宛蚓,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年设塔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了凄吏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡闰蛔,死狀恐怖痕钢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情序六,我是刑警寧澤任连,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站例诀,受9級(jí)特大地震影響随抠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜繁涂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一拱她、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧扔罪,春花似錦秉沼、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至坏瘩,卻和暖如春盅抚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背倔矾。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工妄均, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哪自。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓丰包,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親壤巷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子邑彪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345