Java命令:jstat(JVM Statistics Monitoring Tool)

jstat(JVM Statistics Monitoring Tool)

jstat(JVM Statistics Monitoring Tool)是用于監(jiān)控虛擬機各種運行狀態(tài)信息的命令行工具赞厕。他可以顯示本地或遠程虛擬機進程中的類裝載、內(nèi)存统舀、垃圾收集豺型、JIT編譯等運行數(shù)據(jù)送火,在沒有GUI圖形的服務(wù)器上联贩,它是運行期定位虛擬機性能問題的首選工具。

jstat位于java的bin目錄下泊碑,主要利用JVM內(nèi)建的指令對Java應(yīng)用程序的資源和性能進行實時的命令行的監(jiān)控坤按,包括了對Heap size和垃圾回收狀況的監(jiān)控÷可見臭脓,Jstat是輕量級的、專門針對JVM的工具腹忽,非常適用来累。

jstat 命令格式

jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

參數(shù)解釋:

  • Option — 選項,我們一般使用 -gcutil 查看gc情況

  • vmid — VM的進程號窘奏,即當(dāng)前運行的java進程號

  • interval– 間隔時間嘹锁,單位為秒或者毫秒

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

  • 參數(shù)interval和count代表查詢間隔和次數(shù)着裹,如果省略這兩個參數(shù)领猾,說明只查詢一次。

假設(shè)需要每250毫秒查詢一次進程5828垃圾收集狀況骇扇,一共查詢5次摔竿,那命令行如下:

jstat -gc 5828 250 5

對于命令格式中的VMID與LVMID需要特別說明下:如果是本地虛擬機進程,VMID(Virtual Machine IDentifier,虛機標識符)和LVMID(Local Virtual Machine IDentifier,虛機標識符)是一致的匠题,如果是遠程虛擬機進程拯坟,那VMID的格式應(yīng)當(dāng)是:[protocol:][//] lvmid [@hostname[:port]/servername]

option

選項option代表這用戶希望查詢的虛擬機信息,主要分為3類:類裝載韭山、垃圾收集和運行期編譯狀況郁季,具體選項及作用如下:

  • –class 監(jiān)視類裝載冷溃、卸載數(shù)量、總空間及類裝載所耗費的時間
  • –gc 監(jiān)視Java堆狀況梦裂,包括Eden區(qū)似枕、2個Survivor區(qū)、老年代年柠、永久代等的容量
  • –gccapacity 監(jiān)視內(nèi)容與-gc基本相同凿歼,但輸出主要關(guān)注Java堆各個區(qū)域使用到的最大和最小空間
  • –gcutil 監(jiān)視內(nèi)容與-gc基本相同,但輸出主要關(guān)注已使用空間占總空間的百分比
  • –gcnew 監(jiān)視新生代GC的狀況
  • –gcnewcapacity 監(jiān)視內(nèi)容與-gcnew基本相同冗恨,輸出主要關(guān)注使用到的最大和最小空間
  • –gcold 監(jiān)視老年代GC的狀況
  • –gcoldcapacity 監(jiān)視內(nèi)容與-gcold基本相同答憔,輸出主要關(guān)注使用到的最大和最小空間
  • –gcpermcapacity 輸出永久代使用到的最大和最小空間
  • –compiler 輸出JIT編譯器編譯過的方法、耗時等信息
  • –printcompilation 輸出已經(jīng)被JIT編譯的方法

常見術(shù)語

1. jstat –class<pid> : 顯示加載class的數(shù)量掀抹,及所占空間等信息虐拓。

  • Loaded 裝載的類的數(shù)量
  • Bytes 裝載類所占用的字節(jié)數(shù)
  • Unloaded 卸載類的數(shù)量
  • Bytes 卸載類的字節(jié)數(shù)
  • Time 裝載和卸載類所花費的時間

2. jstat -compiler <pid>顯示VM實時編譯的數(shù)量等信息。

  • Compiled 編譯任務(wù)執(zhí)行數(shù)量
  • Failed 編譯任務(wù)執(zhí)行失敗數(shù)量
  • Invalid 編譯任務(wù)執(zhí)行失效數(shù)量
  • Time 編譯任務(wù)消耗時間
  • FailedType 最后一個編譯失敗任務(wù)的類型
  • FailedMethod 最后一個編譯失敗任務(wù)所在的類及方法

3傲武、jstat -gc <pid>: 可以顯示gc的信息蓉驹,查看gc的次數(shù),及時間揪利。

  • S0C 年輕代中第一個survivor(幸存區(qū))的容量 (字節(jié))
  • S1C 年輕代中第二個survivor(幸存區(qū))的容量 (字節(jié))
  • S0U 年輕代中第一個survivor(幸存區(qū))目前已使用空間 (字節(jié))
  • S1U 年輕代中第二個survivor(幸存區(qū))目前已使用空間 (字節(jié))
  • EC 年輕代中Eden(伊甸園)的容量 (字節(jié))
  • EU 年輕代中Eden(伊甸園)目前已使用空間 (字節(jié))
  • OC Old代的容量 (字節(jié))
  • OU Old代目前已使用空間 (字節(jié))
  • PC Perm(持久代)的容量 (字節(jié))
  • PU Perm(持久代)目前已使用空間 (字節(jié))
  • YGC 從應(yīng)用程序啟動到采樣時年輕代中g(shù)c次數(shù)
  • YGCT 從應(yīng)用程序啟動到采樣時年輕代中g(shù)c所用時間(s)
  • FGC 從應(yīng)用程序啟動到采樣時old代(全gc)gc次數(shù)
  • FGCT 從應(yīng)用程序啟動到采樣時old代(全gc)gc所用時間(s)
  • GCT 從應(yīng)用程序啟動到采樣時gc用的總時間(s)

4态兴、jstat -gccapacity <pid>:可以顯示,VM內(nèi)存中三代(young,old,perm)對象的使用和占用大小

  • NGCMN 年輕代(young)中初始化(最小)的大小(字節(jié))
  • NGCMX 年輕代(young)的最大容量 (字節(jié))
  • NGC 年輕代(young)中當(dāng)前的容量 (字節(jié))
  • S0C 年輕代中第一個survivor(幸存區(qū))的容量 (字節(jié))
  • S1C 年輕代中第二個survivor(幸存區(qū))的容量 (字節(jié))
  • EC 年輕代中Eden(伊甸園)的容量 (字節(jié))
  • OGCMN old代中初始化(最小)的大小 (字節(jié))
  • OGCMX old代的最大容量(字節(jié))
  • OGC old代當(dāng)前新生成的容量 (字節(jié))
  • OC Old代的容量 (字節(jié))
  • PGCMN perm代中初始化(最小)的大小 (字節(jié))
  • PGCMX perm代的最大容量 (字節(jié))
  • PGC perm代當(dāng)前新生成的容量 (字節(jié))
  • PC Perm(持久代)的容量 (字節(jié))
  • YGC 從應(yīng)用程序啟動到采樣時年輕代中g(shù)c次數(shù)
  • FGC 從應(yīng)用程序啟動到采樣時old代(全gc)gc次數(shù)

5疟位、jstat -gcutil <pid>:統(tǒng)計gc信息

  • S0 年輕代中第一個survivor(幸存區(qū))已使用的占當(dāng)前容量百分比
  • S1 年輕代中第二個survivor(幸存區(qū))已使用的占當(dāng)前容量百分比
  • E 年輕代中Eden(伊甸園)已使用的占當(dāng)前容量百分比
  • O old代已使用的占當(dāng)前容量百分比
  • P perm代已使用的占當(dāng)前容量百分比
  • YGC 從應(yīng)用程序啟動到采樣時年輕代中g(shù)c次數(shù)
  • YGCT 從應(yīng)用程序啟動到采樣時年輕代中g(shù)c所用時間(s)
  • FGC 從應(yīng)用程序啟動到采樣時old代(全gc)gc次數(shù)
  • FGCT 從應(yīng)用程序啟動到采樣時old代(全gc)gc所用時間(s)
  • GCT 從應(yīng)用程序啟動到采樣時gc用的總時間(s)

6瞻润、jstat -gcnew <pid>:年輕代對象的信息。

  • S0C 年輕代中第一個survivor(幸存區(qū))的容量 (字節(jié))
  • S1C 年輕代中第二個survivor(幸存區(qū))的容量 (字節(jié))
  • S0U 年輕代中第一個survivor(幸存區(qū))目前已使用空間 (字節(jié))
  • S1U 年輕代中第二個survivor(幸存區(qū))目前已使用空間 (字節(jié))
  • TT 持有次數(shù)限制
  • MTT 最大持有次數(shù)限制
  • EC 年輕代中Eden(伊甸園)的容量 (字節(jié))
  • EU 年輕代中Eden(伊甸園)目前已使用空間 (字節(jié))
  • YGC 從應(yīng)用程序啟動到采樣時年輕代中g(shù)c次數(shù)
  • YGCT 從應(yīng)用程序啟動到采樣時年輕代中g(shù)c所用時間(s)

7献汗、jstat -gcnewcapacity<pid>: 年輕代對象的信息及其占用量敢订。

  • NGCMN 年輕代(young)中初始化(最小)的大小(字節(jié))
  • NGCMX 年輕代(young)的最大容量 (字節(jié))
  • NGC 年輕代(young)中當(dāng)前的容量 (字節(jié))
  • S0CMX 年輕代中第一個survivor(幸存區(qū))的最大容量 (字節(jié))
  • S0C 年輕代中第一個survivor(幸存區(qū))的容量 (字節(jié))
  • S1CMX 年輕代中第二個survivor(幸存區(qū))的最大容量 (字節(jié))
  • S1C 年輕代中第二個survivor(幸存區(qū))的容量 (字節(jié))
  • ECMX 年輕代中Eden(伊甸園)的最大容量 (字節(jié))
  • EC 年輕代中Eden(伊甸園)的容量 (字節(jié))
  • YGC 從應(yīng)用程序啟動到采樣時年輕代中g(shù)c次數(shù)
  • FGC 從應(yīng)用程序啟動到采樣時old代(全gc)gc次數(shù)

8、jstat -gcold <pid>:old代對象的信息罢吃。

  • PC Perm(持久代)的容量 (字節(jié))
  • PU Perm(持久代)目前已使用空間 (字節(jié))
  • OC Old代的容量 (字節(jié))
  • OU Old代目前已使用空間 (字節(jié))
  • YGC 從應(yīng)用程序啟動到采樣時年輕代中g(shù)c次數(shù)
  • FGC 從應(yīng)用程序啟動到采樣時old代(全gc)gc次數(shù)
  • FGCT 從應(yīng)用程序啟動到采樣時old代(全gc)gc所用時間(s)
  • GCT 從應(yīng)用程序啟動到采樣時gc用的總時間(s)

9、stat -gcoldcapacity <pid>: old代對象的信息及其占用量昭齐。

  • OGCMN old代中初始化(最小)的大小 (字節(jié))
  • OGCMX old代的最大容量(字節(jié))
  • OGC old代當(dāng)前新生成的容量 (字節(jié))
  • OC Old代的容量 (字節(jié))
  • YGC 從應(yīng)用程序啟動到采樣時年輕代中g(shù)c次數(shù)
  • FGC 從應(yīng)用程序啟動到采樣時old代(全gc)gc次數(shù)
  • FGCT 從應(yīng)用程序啟動到采樣時old代(全gc)gc所用時間(s)
  • GCT 從應(yīng)用程序啟動到采樣時gc用的總時間(s)

10尿招、jstat -gcpermcapacity<pid>: perm對象的信息及其占用量。

  • PGCMN perm代中初始化(最小)的大小 (字節(jié))
  • PGCMX perm代的最大容量 (字節(jié))
  • PGC perm代當(dāng)前新生成的容量 (字節(jié))
  • PC Perm(持久代)的容量 (字節(jié))
  • YGC 從應(yīng)用程序啟動到采樣時年輕代中g(shù)c次數(shù)
  • FGC 從應(yīng)用程序啟動到采樣時old代(全gc)gc次數(shù)
  • FGCT 從應(yīng)用程序啟動到采樣時old代(全gc)gc所用時間(s)
  • GCT 從應(yīng)用程序啟動到采樣時gc用的總時間(s)

11阱驾、jstat -printcompilation <pid>:當(dāng)前VM執(zhí)行的信息就谜。

  • Compiled 編譯任務(wù)的數(shù)目
  • Size 方法生成的字節(jié)碼的大小
  • Type 編譯類型
  • Method 類名和方法名用來標識編譯的方法。類名使用/做為一個命名空間分隔符里覆。方法名是給定類中的方法丧荐。上述格式是由-XX:+PrintComplation選項進行設(shè)置的
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市喧枷,隨后出現(xiàn)的幾起案子虹统,更是在濱河造成了極大的恐慌弓坞,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件车荔,死亡現(xiàn)場離奇詭異渡冻,居然都是意外死亡,警方通過查閱死者的電腦和手機忧便,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門族吻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人珠增,你說我怎么就攤上這事超歌。” “怎么了蒂教?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵巍举,是天一觀的道長。 經(jīng)常有香客問我悴品,道長禀综,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任苔严,我火速辦了婚禮定枷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘届氢。我一直安慰自己欠窒,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布退子。 她就那樣靜靜地躺著岖妄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪寂祥。 梳的紋絲不亂的頭發(fā)上荐虐,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天,我揣著相機與錄音丸凭,去河邊找鬼福扬。 笑死,一個胖子當(dāng)著我的面吹牛惜犀,可吹牛的內(nèi)容都是我干的铛碑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼虽界,長吁一口氣:“原來是場噩夢啊……” “哼汽烦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起莉御,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤撇吞,失蹤者是張志新(化名)和其女友劉穎俗冻,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體梢夯,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡言疗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了颂砸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片噪奄。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖人乓,靈堂內(nèi)的尸體忽然破棺而出勤篮,到底是詐尸還是另有隱情,我是刑警寧澤色罚,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布碰缔,位于F島的核電站,受9級特大地震影響戳护,放射性物質(zhì)發(fā)生泄漏金抡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一腌且、第九天 我趴在偏房一處隱蔽的房頂上張望梗肝。 院中可真熱鬧何吝,春花似錦齐唆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坝锰。三九已至,卻和暖如春重付,著一層夾襖步出監(jiān)牢的瞬間顷级,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工确垫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留愕把,地道東北人。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓森爽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親嚣镜。 傳聞我的和親對象是個殘疾皇子爬迟,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,107評論 2 356

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