GC 日志分析工具列表

gc日志分析工具

性能測(cè)試排查定位問題潜秋,分析調(diào)優(yōu)過程中,會(huì)遇到要分析gc日志,人肉分析gc日志有時(shí)比較困難羡洛,相關(guān)圖形化或命令行工具可以有效地幫助輔助分析。

Gc日志參數(shù)

通過在tomcat啟動(dòng)腳本中添加相關(guān)參數(shù)生成http://code.google.com/p/gclogviewer/gc日志

-verbose.gc開關(guān)可顯示GC的操作內(nèi)容藕漱。打開它欲侮,可以顯示最忙和最空閑收集行為發(fā)生的時(shí)間、收集前后的內(nèi)存大小肋联、收集需要的時(shí)間等威蕉。

打開-xx:+ printGCdetails開關(guān),可以詳細(xì)了解GC中的變化橄仍。

打開-XX: + PrintGCTimeStamps開關(guān)韧涨,可以了解這些垃圾收集發(fā)生的時(shí)間,自JVM啟動(dòng)以后以秒計(jì)量侮繁。

最后虑粥,通過-xx: + PrintHeapAtGC開關(guān)了解堆的更詳細(xì)的信息。

為了了解新域的情況鼎天,可以通過-XX:=PrintTenuringDistribution開關(guān)了解獲得使用期的對(duì)象權(quán)舀奶。

-Xloggc:$CATALINA_BASE/logs/gc.log gc日志產(chǎn)生的路徑

XX:+PrintGCApplicationStoppedTime // 輸出GC造成應(yīng)用暫停的時(shí)間

-XX:+PrintGCDateStamps // GC發(fā)生的時(shí)間信息

Gc日志

893863_7743.jpeg

日志中顯示了gc發(fā)生的時(shí)間,young區(qū)回收情況斋射,整體回收情況育勺,fullGC情況但荤,回收所消耗時(shí)間等

常用JVM參數(shù)

分析gc日志后,經(jīng)常需要調(diào)整jvm內(nèi)存相關(guān)參數(shù)涧至,常用參數(shù)如下

-Xms:初始堆大小腹躁,默認(rèn)為物理內(nèi)存的1/64(<1GB);默認(rèn)(MinHeapFreeRatio參數(shù)可以調(diào)整)空余堆內(nèi)存小于40%時(shí)南蓬,JVM就會(huì)增大堆直到-Xmx的最大限制

-Xmx:最大堆大小纺非,默認(rèn)(MaxHeapFreeRatio參數(shù)可以調(diào)整)空余堆內(nèi)存大于70%時(shí),JVM會(huì)減少堆直到 -Xms的最小限制

-Xmn:新生代的內(nèi)存空間大小赘方,注意:此處的大小是(eden+ 2 survivor space)烧颖。與jmap -heap中顯示的New gen是不同的。整個(gè)堆大小=新生代大小 + 老生代大小 + 永久代大小窄陡。

在保證堆大小不變的情況下炕淮,增大新生代后,將會(huì)減小老生代大小。此值對(duì)系統(tǒng)性能影響較大,Sun官方推薦配置為整個(gè)堆的3/8跳夭。

-XX:SurvivorRatio:新生代中Eden區(qū)域與Survivor區(qū)域的容量比值涂圆,默認(rèn)值為8。兩個(gè)Survivor區(qū)與一個(gè)Eden區(qū)的比值為2:8,一個(gè)Survivor區(qū)占整個(gè)年輕代的1/10币叹。

-Xss:每個(gè)線程的堆棧大小润歉。JDK5.0以后每個(gè)線程堆棧大小為1M,以前每個(gè)線程堆棧大小為256K。應(yīng)根據(jù)應(yīng)用的線程所需內(nèi)存大小進(jìn)行適當(dāng)調(diào)整颈抚。在相同物理內(nèi)存下,減小這個(gè)值能生成更多的線程踩衩。但是操作系統(tǒng)對(duì)一個(gè)進(jìn)程內(nèi)的線程數(shù)還是有限制的,不能無限生成邪意,經(jīng)驗(yàn)值在3000~5000左右九妈。一般小的應(yīng)用反砌, 如果棧不是很深雾鬼, 應(yīng)該是128k夠用的,大的應(yīng)用建議使用256k宴树。這個(gè)選項(xiàng)對(duì)性能影響比較大策菜,需要嚴(yán)格的測(cè)試。和threadstacksize選項(xiàng)解釋很類似,官方文檔似乎沒有解釋,在論壇中有這樣一句話:"-Xss is translated in a VM flag named ThreadStackSize”一般設(shè)置這個(gè)值就可以了酒贬。

-XX:PermSize:設(shè)置永久代(perm gen)初始值又憨。默認(rèn)值為物理內(nèi)存的1/64。

-XX:MaxPermSize:設(shè)置持久代最大值锭吨。物理內(nèi)存的1/4蠢莺。

Gc日志分析工具

(1)GCHisto

http://java.net/projects/gchisto

直接點(diǎn)擊gchisto.jar就可以運(yùn)行,點(diǎn)add載入gc.log

統(tǒng)計(jì)了總共gc次數(shù)零如,youngGC次數(shù)躏将,F(xiàn)ullGC次數(shù)锄弱,次數(shù)的百分比,GC消耗的時(shí)間祸憋,百分比会宪,平均消耗時(shí)間,消耗時(shí)間最小最大值等

893879_4234.jpeg

統(tǒng)計(jì)的圖形化表示

893896_6226.jpeg

YoungGC,FullGC不同消耗時(shí)間上次數(shù)的分布圖蚯窥,勾選可以顯示youngGC或fullGC單獨(dú)的分布情況

893925_4266.jpeg

整個(gè)時(shí)間過程詳細(xì)的gc情況掸鹅,可以對(duì)整個(gè)過程進(jìn)行剖析

893944_8263.jpeg

(2)GCLogViewer

http://code.google.com/p/gclogviewer/

點(diǎn)擊run.bat運(yùn)行

整個(gè)過程gc情況的趨勢(shì)圖,還顯示了gc類型拦赠,吞吐量巍沙,平均gc頻率,內(nèi)存變化趨勢(shì)等

Tools里還能比較不同gc日志

893963_8258.jpeg

(3)HPjmeter

獲取地址 http://www.hp.com/go/java

參考文檔 http://www.javaperformancetuning.com/tools/hpjtune/index.shtml

工具很強(qiáng)大荷鼠,但只能打開由以下參數(shù)生成的GC log赎瞎, -verbose:gc -Xloggc:gc.log,添加其他參數(shù)生成的gc.log無法打開。

(4)GCViewer

http://www.tagtraum.com/gcviewer.html

這個(gè)工具用的挺多的颊咬,但只能在JDK1.5以下的版本中運(yùn)行务甥,1.6以后沒有對(duì)應(yīng)。

(5)garbagecat

http://code.google.com/a/eclipselabs.org/p/garbagecat/wiki/Documentation

其它監(jiān)控方法

Jvisualvm動(dòng)態(tài)分析jvm內(nèi)存情況和gc情況喳篇,插件:visualGC

893984_8005.jpeg
894000_9349.jpeg

jvisualvm還可以heapdump出對(duì)應(yīng)hprof文件(默認(rèn)存放路徑:監(jiān)控的服務(wù)器 /tmp下)敞临,利用相關(guān)工具,比如HPjmeter可以對(duì)其進(jìn)行分析

grep Full gc.log粗略觀察FullGC發(fā)生頻率

jstat –gcutil [pid] [intervel] [count]

jmap -histo pid可以觀測(cè)對(duì)象的個(gè)數(shù)和占用空間

jmap -heap pid可以觀測(cè)jvm配置參數(shù)麸澜,堆內(nèi)存各區(qū)使用情況

jprofiler,jmap dump出來用MAT分析

如果要分析的dump文件很大的話挺尿,就需要很多內(nèi)存,很容易crash炊邦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末编矾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子馁害,更是在濱河造成了極大的恐慌窄俏,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碘菜,死亡現(xiàn)場(chǎng)離奇詭異凹蜈,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)忍啸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門仰坦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人计雌,你說我怎么就攤上這事悄晃。” “怎么了凿滤?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵妈橄,是天一觀的道長鼠渺。 經(jīng)常有香客問我,道長眷细,這世上最難降的妖魔是什么拦盹? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮溪椎,結(jié)果婚禮上普舆,老公的妹妹穿的比我還像新娘。我一直安慰自己校读,他們只是感情好沼侣,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著歉秫,像睡著了一般蛾洛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上雁芙,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天轧膘,我揣著相機(jī)與錄音,去河邊找鬼兔甘。 笑死谎碍,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的洞焙。 我是一名探鬼主播蟆淀,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼澡匪!你這毒婦竟也來了熔任?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤唁情,失蹤者是張志新(化名)和其女友劉穎疑苔,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荠瘪,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡夯巷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哀墓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡喷兼,死狀恐怖篮绰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情季惯,我是刑警寧澤吠各,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布臀突,位于F島的核電站,受9級(jí)特大地震影響贾漏,放射性物質(zhì)發(fā)生泄漏候学。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一纵散、第九天 我趴在偏房一處隱蔽的房頂上張望梳码。 院中可真熱鬧,春花似錦伍掀、人聲如沸掰茶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽濒蒋。三九已至,卻和暖如春把兔,著一層夾襖步出監(jiān)牢的瞬間沪伙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來泰國打工县好, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留焰坪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓聘惦,卻偏偏與公主長得像某饰,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子善绎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容