JDK自帶的性能調(diào)優(yōu)監(jiān)測(cè)工具使用示例

JVM性能調(diào)優(yōu)監(jiān)控工具jps脓钾、jstack、jmap旅择、jhat惭笑、jstat位于JDK的bin目錄,這些工具短小精悍生真,常用于線上系統(tǒng)的分析監(jiān)測(cè)沉噩。

用來(lái)解決如下問題

  1. OutOfMemoryError,分析內(nèi)存不足的原因
  2. 內(nèi)存泄漏
  3. 線程死鎖
  4. 鎖競(jìng)爭(zhēng)
  5. java線程消耗CPU過高

jps(Java Virtual Machine Process Status Tool)

JVM 進(jìn)程狀態(tài)工具柱蟀,主要用來(lái)輸出JVM中運(yùn)行的進(jìn)程狀態(tài)信息

語(yǔ)法格式:


演示如下:




打印多項(xiàng)


jstack(java stack trace)

用來(lái)查看某個(gè)Java進(jìn)程內(nèi)的線程堆棧信息川蒙,實(shí)時(shí)監(jiān)測(cè)系統(tǒng)運(yùn)行時(shí)線程棧信息,而不用暫停程序排查长已,常用于線上系統(tǒng)的問題排查畜眨,一般都是間隔一段時(shí)間使用jstack命令打印出當(dāng)前系統(tǒng)實(shí)時(shí)快照,然后比對(duì)線程在在鎖上的執(zhí)行狀態(tài)來(lái)判斷系統(tǒng)是否存在死鎖术瓮、過度競(jìng)爭(zhēng)等問題康聂。

語(yǔ)法格式:

演示:
步驟1:top 命令查看按CPU使用率降序進(jìn)程ID


其實(shí)整個(gè)系統(tǒng)比較閑,拿來(lái)做實(shí)驗(yàn)胞四,最占CPU的是進(jìn)程ID為12622的進(jìn)程恬汁。

步驟2 :top -Hp pid 命令查看進(jìn)程中各個(gè)線程占用CPU的情況。


可見最占CPU的是ID為13037的線程
與top -Hp pid等價(jià)的命令:ps -Lfp pid或者ps -mp pid -o THREAD, tid, time辜伟。

步驟3:printf "%x\n" 13037 獲取16進(jìn)制nid


將十進(jìn)制13037 轉(zhuǎn)換為16進(jìn)制為32ed

步驟4:使用jstack命令分析線程棧信息

  1. jstack -l pid 查看某一JVM進(jìn)程的所有線程的信息


利用linux輸出重定向氓侧,將線程信息輸入到pid12622.dump文件中
然后使用more命令查看此文件

部分信息脊另,以后對(duì)這個(gè)dump文件信息進(jìn)行解析

http://blog.csdn.net/rachel_luo/article/details/8920596

  1. jstack -l pid | grep nid查看某一JVM進(jìn)程的指定線程的信息

利用Linux所提供的管道符“|”將兩個(gè)命令隔開,管道符左邊命令的輸出就會(huì)作為管道符右邊命令的輸入约巷。連續(xù)使用管道意味著第一個(gè)命令的輸出會(huì)作為第二個(gè)命令的輸入偎痛,第二個(gè)命令的輸出又會(huì)作為第三個(gè)命令的輸入,依此類推独郎,grep是支持正則表達(dá)式的實(shí)用文本搜索工具踩麦。


jstat(Java Virtual Machine Statistics Monitoring Tool)

JVM統(tǒng)計(jì)監(jiān)測(cè)工具, 常用來(lái)實(shí)時(shí)監(jiān)測(cè)系統(tǒng)堆的使用情況,以及GC信息囚聚、編譯信息靖榕、類加載信息,常用來(lái)判斷系統(tǒng)JVM參數(shù)是否設(shè)置合理顽铸,作為系統(tǒng)參數(shù)調(diào)優(yōu)的信息統(tǒng)計(jì)工具茁计。

語(yǔ)法:

根據(jù)jstat統(tǒng)計(jì)的維度不同,可以使用如下表中的選項(xiàng)進(jìn)行不同維度的統(tǒng)計(jì)谓松,不同的操作系統(tǒng)支持的選項(xiàng)可能會(huì)不一樣星压,可以通過-options選項(xiàng),查看不同操作系統(tǒng)所支持選項(xiàng)鬼譬。

jstat -option獲取系統(tǒng)支持的選項(xiàng)


選項(xiàng)說明



演示



列名信息參考 http://blog.csdn.net/fenglibing/article/details/6411951

JVM堆內(nèi)存布局(JDK1.7及之前娜膘,JDK1.8已經(jīng)移除永久代i,而使用元數(shù)據(jù)优质,元數(shù)據(jù)屬于堆外內(nèi)存竣贪,但是也間接被GC管理)


說明:

jmap(Memory Map)和jhat(Java Heap Analysis Tool)

jmap用來(lái)查看堆內(nèi)存(JVM中各個(gè)代的內(nèi)存情況,對(duì)象占用情況)使用狀況巩螃,還可以導(dǎo)出整個(gè)JVM的內(nèi)存信息演怎,一般結(jié)合jhat使用。

常用命令格式(注意64位JDK避乏,需要加每條命令要加 -J-d64):

jmap -heap [pid] 查看整個(gè)JVM中內(nèi)存使用情況(還含有JDK版本爷耀,GC策略相關(guān)等)。



需要注意當(dāng)使用CMS GC時(shí) jmap -heap命令可能導(dǎo)致Java進(jìn)程被掛起

jmap -histo [pid]

查看JVM堆中存活對(duì)象的詳細(xì)使用情況,常用于分析OutOfMemory


jmap -dump:format=b, file=fileName [pid]

將整個(gè)JVM內(nèi)存信息以二進(jìn)制的形式導(dǎo)出到指定文件,這個(gè)二進(jìn)制文件可以通過JHAT來(lái)分析


分析內(nèi)存快照

jhat [file]

分析內(nèi)存占用包颁,對(duì)象引用關(guān)系等, J-Xmx1024意思是將最大堆參數(shù)-Xmx1024傳遞給啟動(dòng)jhat分析的JVM進(jìn)程的咆耿。




通過瀏覽器訪問 http:ip:7000地址,進(jìn)行分析



首頁(yè)按包進(jìn)行分組爹橱,有全限定類名和此類加載到永久代的堆地址

點(diǎn)擊鏈接查看指定類的的加載信息票灰,繼承信息,數(shù)據(jù)域、引用信息屑迂,以及創(chuàng)建的對(duì)象實(shí)例信息

本文參考如下鏈接,只是對(duì)這些工具的總結(jié)筆記

參考以及拓展鏈接
R大(莫樞)借HSDB來(lái)探索HotSpot VM的運(yùn)行時(shí)數(shù)據(jù)
Thread dump 分析綜述
http://blog.csdn.net/fenglibing/article/details/6411940
http://www.open-open.com/lib/view/open1390916852007.html
http://blog.csdn.net/qq_16811963/article/details/52997178

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末冯键,一起剝皮案震驚了整個(gè)濱河市惹盼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌惫确,老刑警劉巖手报,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異改化,居然都是意外死亡掩蛤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門陈肛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)揍鸟,“玉大人,你說我怎么就攤上這事句旱⊙粼澹” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵谈撒,是天一觀的道長(zhǎng)腥泥。 經(jīng)常有香客問我,道長(zhǎng)啃匿,這世上最難降的妖魔是什么蛔外? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮溯乒,結(jié)果婚禮上夹厌,老公的妹妹穿的比我還像新娘。我一直安慰自己橙数,他們只是感情好尊流,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著灯帮,像睡著了一般崖技。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钟哥,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天迎献,我揣著相機(jī)與錄音,去河邊找鬼腻贰。 笑死吁恍,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播冀瓦,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼伴奥,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了翼闽?” 一聲冷哼從身側(cè)響起拾徙,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎感局,沒想到半個(gè)月后尼啡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡询微,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年崖瞭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撑毛。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡书聚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出代态,到底是詐尸還是另有隱情寺惫,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布蹦疑,位于F島的核電站西雀,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏歉摧。R本人自食惡果不足惜艇肴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望叁温。 院中可真熱鬧再悼,春花似錦、人聲如沸膝但。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)跟束。三九已至莺奸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間冀宴,已是汗流浹背灭贷。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留略贮,地道東北人甚疟。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓仗岖,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親览妖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子轧拄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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