JVM監(jiān)控及診斷工具

命令行工具

  • jps
    ??jps類似于linux中的ps命令觉义,用于打印正在運(yùn)行的java進(jìn)程相關(guān)的信息悍及。主要參數(shù)有:
    1)-l 打印模塊名以及包名
    2)-v 打印傳給JVM的參數(shù)
    3)-m打印傳給main方法的參數(shù)
  • jstat

    ??用于打印JVM進(jìn)程的性能數(shù)據(jù)刃跛,主要用來查看JVM gc相關(guān)的數(shù)據(jù)。實(shí)際中用法如下圖:
    jstat用法
    其中-gc可以換成-class 敦间、-gcnew、-gcold等參數(shù)梦皮;而54992表示的JVM的進(jìn)程id(可能通過上面的jps命令查看) ;4s表求每4秒打印一次,后面的3表求共打印三次桃焕。

    打印的各參數(shù)含義如下:
    1:S0C剑肯、S1C、S0U观堂、S1U:Survivor 0/1區(qū)容量(Capacity)和使用量(Used)
    2:EC退子、EU:Eden區(qū)容量和使用量
    3:OC、OU:年老代容量和使用量
    4:MC型将、MU:元數(shù)據(jù)區(qū)容量和使用量
    5:CCSC寂祥、CCSU:壓縮類空間容量和使用量
    5:YGC、YGT:年輕代GC次數(shù)和GC耗時(shí)
    6:FGC七兜、FGCT:Full GC次數(shù)和Full GC耗時(shí)
    7:GCT:GC總耗時(shí)
    jstat可以用來判斷系統(tǒng)是否出現(xiàn)了內(nèi)存泄漏丸凭,方法是通過一短長時(shí)間的觀察OU的增長情況,如果OU穩(wěn)定增長腕铸,則有可能出現(xiàn)內(nèi)存泄漏惜犀。

  • jmap
    ??jmap用于分析JVM中堆中的對象,包括生成堆的dump文件狠裹,這個(gè)命令同樣有多條子命令虽界。常用的命令有如下幾個(gè):

    1:jmap -heap:用于打印堆內(nèi)存使用情況,包括使用的GC算法涛菠、堆配置參數(shù)和各代中堆內(nèi)存使用莉御,示例如下圖所示:
    jmap -heap使用示例

    2:jmap -histo:live:用于打印堆中各個(gè)類中的實(shí)例數(shù)目以及占用內(nèi)存的大小,并排序俗冻。使用的示例如下:
    jmap -histo:live使用示例

    3:jmap -dump :用于導(dǎo)出JVM的堆快照文件礁叔,方便用GUI工具分析。


    jmap -dump使用示例

    4:jmap -finalizerinfo:打印所有待 finalize 的對象迄薄。
    jmap -finalizerinfo使用示例

    注意:jmap依賴于 Java 虛擬機(jī)的Attach API琅关,因此只能監(jiān)控本地的java進(jìn)程。一旦開啟 Java 虛擬機(jī)參數(shù)DisableAttachMechanism(即使用參數(shù)-XX:+DisableAttachMechanism)讥蔽,基于 Attach API 的命令將無法執(zhí)行涣易。
  • jinfo
    ??jinfo命令可用來查看目標(biāo) Java 進(jìn)程的參數(shù),如傳遞給 Java 虛擬機(jī)的-X(即輸出中的 jvm_args)冶伞、-XX參數(shù)(即輸出中的 VM Flags)新症,以及可在 Java 層面通過System.getProperty獲取的-D參數(shù)(即輸出中的 System Properties)。
  • jstack
    ??jstack:主要用來查看某個(gè)Java進(jìn)程內(nèi)的線程堆棧信息碰缔,而用可以用于發(fā)現(xiàn)死鎖账劲。有如下兩個(gè)參數(shù):
    1:-l (long listings)會(huì)打印出額外的鎖信息戳护,在發(fā)生死鎖時(shí)可以用jstack -l pid來觀察鎖持有情況金抡。
    2: -m (mixed mode)瀑焦,不僅會(huì)輸出Java堆棧信息,還會(huì)輸出C/C++堆棧信息(比如Native方法)
    如果線程數(shù)太多梗肝,可以借助分析操作系統(tǒng)特用的分析工具找出用時(shí)最長的線程榛瓮,然后通過如下圖的命令定位到具體的堆棧信息:
    linux系統(tǒng)上可以通過top -Hp pid找出占用時(shí)間最多的線程,這里的線程號需要轉(zhuǎn)成16進(jìn)制巫击。

GUI工具

Eclipse MAT

官網(wǎng)地址 http://www.eclipse.org/mat/downloads.php,下載最新的包禀晓,解壓放到eclipse的dropins目錄下,重啟eclipse便可以使用MAT工具分析堆內(nèi)存了坝锰。Memory Analysis視圖的打開方工如下圖:

Memory Analysis

MAT 計(jì)算對象占據(jù)內(nèi)存的兩種方式粹懒。第一種是 Shallow heap,指的是對象自身所占據(jù)的內(nèi)存顷级。第二種是** Retained heap凫乖,指的是當(dāng)對象不再被引用時(shí),垃圾回收器所能回收的總內(nèi)存**弓颈,包括對象自身所占據(jù)的內(nèi)存帽芽,以及僅能夠通過該對象引用到的其他對象所占據(jù)的內(nèi)存。如下圖所示:
shallow Heap與 Retained Heap

MAT還有一個(gè)重要的視圖便是dominator tree(支配樹), 視圖里是將堆中的所有對象看成一張圖翔冀,每個(gè)對象是一個(gè)圖節(jié)點(diǎn)导街,而 GC Roots 則是對象圖的入口,對象之間的引用關(guān)系則構(gòu)成了對象圖中的有向邊纤子。這樣一來搬瑰,便能夠構(gòu)造出該對象圖所對應(yīng)的支配樹。如下圖所示:
dominator_tree視圖

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末控硼,一起剝皮案震驚了整個(gè)濱河市跌捆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌象颖,老刑警劉巖佩厚,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異说订,居然都是意外死亡抄瓦,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門陶冷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钙姊,“玉大人,你說我怎么就攤上這事埂伦£溃” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵驱还,是天一觀的道長。 經(jīng)常有香客問我胀莹,道長,這世上最難降的妖魔是什么婚温? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任描焰,我火速辦了婚禮,結(jié)果婚禮上栅螟,老公的妹妹穿的比我還像新娘荆秦。我一直安慰自己,他們只是感情好力图,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布步绸。 她就那樣靜靜地躺著,像睡著了一般吃媒。 火紅的嫁衣襯著肌膚如雪靡努。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天晓折,我揣著相機(jī)與錄音惑朦,去河邊找鬼。 笑死漓概,一個(gè)胖子當(dāng)著我的面吹牛漾月,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播胃珍,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼梁肿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了觅彰?” 一聲冷哼從身側(cè)響起吩蔑,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎填抬,沒想到半個(gè)月后烛芬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡飒责,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年赘娄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宏蛉。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡遣臼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拾并,到底是詐尸還是另有隱情揍堰,我是刑警寧澤鹏浅,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站屏歹,受9級特大地震影響隐砸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜西采,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望继控。 院中可真熱鬧械馆,春花似錦、人聲如沸武通。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽冶忱。三九已至尾菇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間囚枪,已是汗流浹背派诬。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留链沼,地道東北人默赂。 一個(gè)月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像括勺,于是被迫代替她去往敵國和親缆八。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

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