性能測試必備監(jiān)控技能jvm之jdk命令行工具篇16

3.png

前言

對于JVM的性能監(jiān)控测蹲,主要注意以下關(guān)鍵參數(shù)棚壁,通過jdk自帶的命令行工具饺蔑,即可查看相關(guān)參數(shù),從而分析系統(tǒng)或目標服務(wù)程序中存在的性能瓶頸

jps

JVM Process Status Tool的縮寫令哟,JVM進程狀況工具。

主要功能:
列出正在運行的java進程杖刷,并顯示執(zhí)行主類的名稱及進程在本地JVM中的ID励饵。

與ps命令相似,可以查看java進程ID(LVMID)滑燃。
使用方法:

jps [options][hostid]

[options]:
-q: 只輸出LVMID
-m: 輸出JVM啟動時傳給主類的方法
-l:輸出主類的全名役听,如果是Jar則輸出jar的路徑
-v: 輸出JVM啟動參數(shù)

jstat

JVM Statistics Monitoring Tool的縮寫,JVM統(tǒng)計信息監(jiān)控工具表窘。

主要功能:監(jiān)控JVM各種運行狀態(tài)信息典予,如虛擬機進程中的類裝載、內(nèi)存乐严、GC瘤袖、JIT編譯等數(shù)據(jù)。

使用方法:

jstat [options vmid [interval [s|ms] [count] ]]

 參數(shù)解釋:

Options — 選項昂验,一般使用 -gcutil 查看gc情況

vmid    — VM的進程號捂敌,與LVMID一致,使用jps查看

interval– 間隔時間既琴,單位為秒或者毫秒

count   — 打印次數(shù)占婉,如果缺省則打印無數(shù)次

注:
1、本地JVM進程:與LVMID一致甫恩,使用jps查看
2逆济、遠程JVM進程:[protocol:][//]LVMID[@hostname[:post]/servername]

遠程查看,需在目標服務(wù)上啟動jstatd服務(wù)。

下面我們看下options選項:

  • jstat -class vmid:顯示加載class的數(shù)量奖慌,及所占空間等信息抛虫。

  • jstat -compiler vmid:顯示VM實時編譯的數(shù)量等信息。

  • jstat -gc vmid:顯示gc的信息简僧,查看gc的次數(shù)建椰,及時間。其中最后五項涎劈,分別是young gc的次數(shù)广凸,young gc的時間,full gc的次數(shù)蛛枚,full gc的時間谅海,gc的總時間。

  • jstat -gccapacity: 顯示VM內(nèi)存中三代(young,old,perm)對象的使用和占用大小蹦浦,如:PGCMN顯示的是最小perm的內(nèi)存使用量扭吁,PGCMX顯示的是perm的內(nèi)存最大使用量,PGC是當前新生成的perm內(nèi)存占用量盲镶,PC是但前perm內(nèi)存占用量侥袜。其他的可以根據(jù)這個類推, OC是old內(nèi)純的占用量溉贿。

  • jstat -gcnew vmid:new對象的信息枫吧。

  • jstat -gcnewcapacity vmid:new對象的信息及其占用量。

  • jstat -gcold vmid:old對象的信息宇色。

  • jstat -gcoldcapacity vmid:old對象的信息及其占用量九杂。

  • jstat -gcpermcapacity vmid: perm對象的信息及其占用量。

  • jstat -util vmid:統(tǒng)計gc信息統(tǒng)計宣蠕。

  • jstat -printcompilation vmid:當前VM執(zhí)行的信息例隆。

jmap

JVM Memory Map for Java的縮寫,Java內(nèi)存映像工具抢蚀。

主要功能:

  1. 用于生成堆轉(zhuǎn)儲快照镀层,即dump文件

  2. 可以查詢finalize執(zhí)行隊列、Java堆和永久代的詳細信息(使用率皿曲、當前用的GC等)

使用方法:

jmap [ option ] pid

pid 與LVMID一致唱逢,使用jps查看
  • dump: [live,]format=b,file=<filename> 使用hprof二進制形式,輸出jvm的heap內(nèi)容到文件。 live子選項是可選的屋休,如果指定live選項,那么只輸出活的對象到文件坞古。

  • finalizerinfo 打印正等待回收的對象的信息。

  • heap 打印heap的概要信息博投,GC使用的算法,heap的配置及wise heap的使用情況盯蝴。

  • histo[:live] 打印每個class的實例數(shù)目,內(nèi)存占用,類全名信息. VM的內(nèi)部類名字開頭會加上前綴”*”毅哗。 如果指定live,只統(tǒng)計活的對象數(shù)量听怕。

  • permstat 打印classload和jvm heap長久層的信息。 包含每個classloader的名字虑绵、活動性尿瞭、地址、父classloader和加載的class數(shù)量翅睛,內(nèi)部String的數(shù)量和占用內(nèi)存數(shù)也會打印出來声搁。

  • F 強迫在pid沒有相應(yīng)的時候使用-dump或者-histo參數(shù). 在這個模式下,live參數(shù)無效。

  • h | -help 打印輔助信息

  • J 傳遞參數(shù)給jmap啟動的jvm.

注:使用jmap的時候JVM會處于假死狀態(tài)捕发,所以只能在服務(wù)已死疏旨,但進程還在的情況下使用。

jstack

JVM Stack Trace for Java的縮寫扎酷,堆棧跟蹤工具檐涝。

主要功能:

  1. 用于生成JVM當前的線程快照(即當前JVM內(nèi)每一個條線程正在執(zhí)行的方法堆棧集合)
  2. 用于分析線程出現(xiàn)長時間停頓的原因

使用方法:

jstack [options] vmid

options:
-F 當正常輸出的請求不響應(yīng)時,強制輸出線程堆棧(jstack [-l] pid無法響應(yīng)時法挨,強制打印堆棧)

-l 除堆棧信息外谁榜,顯示關(guān)于鎖的附加信息

-m
打印混合模式(Java和本地C/C++幀)的堆棧跟蹤信息。

-h
打印幫助信息凡纳。

-help
打印幫助信息窃植。

jhat

用來分析java堆的命令,可以將堆中的對象以html的形式顯示出來荐糜,包括對象的數(shù)量巷怜,大小等等,并支持對象查詢語言

java堆棧dump來源方式:
有以下幾種方式可以生成一個Java heap dump:

  • 使用jmap -dump選項獲取一個運行時的heap dump狞尔。
  • 使用jconsole選項通過運行時的HotSpotDiagnosticMXBean獲取一個heap dump丛版。
  • 通過指定-XX:+HeapDumpOnOutOfMemoryErrorVM選項,在拋出OutOfMemoryError錯誤時偏序,將會生成一個heap dump页畦。
  • 使用hprof。

訪問 http://localhost:7000研儒,就可以查看詳細的內(nèi)存信息

有時dump出來的堆很大豫缨,在啟動時會報堆空間不足的錯誤,可以使用如下參數(shù):
jhat -J-Xmx1024m <heap dump file>

總結(jié)

這些命令都在jdk的bin目錄里端朵,是jdk自帶的一些監(jiān)控分析工具好芭,如果你在bin目錄下沒有找到對應(yīng)的工具,說明該版本的jdk已經(jīng)去除了該命令的支持冲呢。

在筆者日常性能測試診斷調(diào)優(yōu)時舍败,最常用的組合是jps和jstack,再加上第三方的分析工具。后續(xù)會介紹第三方的分析工具邻薯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末裙戏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子厕诡,更是在濱河造成了極大的恐慌累榜,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灵嫌,死亡現(xiàn)場離奇詭異壹罚,居然都是意外死亡,警方通過查閱死者的電腦和手機寿羞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門猖凛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人稠曼,你說我怎么就攤上這事形病。” “怎么了霞幅?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵漠吻,是天一觀的道長。 經(jīng)常有香客問我司恳,道長途乃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任扔傅,我火速辦了婚禮耍共,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘猎塞。我一直安慰自己试读,他們只是感情好,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布荠耽。 她就那樣靜靜地躺著钩骇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪铝量。 梳的紋絲不亂的頭發(fā)上倘屹,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天,我揣著相機與錄音慢叨,去河邊找鬼纽匙。 笑死,一個胖子當著我的面吹牛拍谐,可吹牛的內(nèi)容都是我干的烛缔。 我是一名探鬼主播馏段,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼践瓷!你這毒婦竟也來了毅弧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤当窗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后寸宵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體崖面,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年梯影,在試婚紗的時候發(fā)現(xiàn)自己被綠了巫员。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡甲棍,死狀恐怖简识,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情感猛,我是刑警寧澤七扰,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站陪白,受9級特大地震影響颈走,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜咱士,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一立由、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧序厉,春花似錦锐膜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至庭再,卻和暖如春捞奕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拄轻。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工颅围, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人恨搓。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓院促,卻偏偏與公主長得像筏养,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子常拓,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

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