概述
Jstat是JDK自帶的一個(gè)輕量級(jí)小工具。全稱“Java Virtual Machine statistics monitoring tool”,它位于java的bin目錄下,主要利用JVM內(nèi)建的指令對(duì)Java應(yīng)用程序的資源和性能進(jìn)行實(shí)時(shí)的命令行的監(jiān)控,包括了對(duì)Heap size和垃圾回收狀況的監(jiān)控。
jstat 用法
- option: 參數(shù)選項(xiàng)
- -t: 可以在打印的列加上Timestamp列,用于顯示系統(tǒng)運(yùn)行的時(shí)間
- -h: 可以在周期性數(shù)據(jù)數(shù)據(jù)的時(shí)候,可以在指定輸出多少行以后輸出一次表頭
- vmid: Virtual Machine ID( 進(jìn)程的 pid)
- interval: 執(zhí)行每次的間隔時(shí)間,單位為毫秒
- count: 用于指定輸出多少次記錄,缺省則會(huì)一直打印
option 可以從下面參數(shù)中選擇
- -class 顯示ClassLoad的相關(guān)信息;
- -compiler 顯示JIT編譯的相關(guān)信息;
- -gc 顯示和gc相關(guān)的堆信息;
- -gccapacity 顯示各個(gè)代的容量以及使用情況;
- -gcmetacapacity 顯示metaspace的大小
- -gcnew 顯示新生代信息;
- -gcnewcapacity 顯示新生代大小和使用情況;
- -gcold 顯示老年代和永久代的信息;
- -gcoldcapacity 顯示老年代的大小;
- -gcutil 顯示垃圾收集信息;
- -gccause 顯示垃圾回收的相關(guān)信息(通-gcutil),同時(shí)顯示最后一次或當(dāng)前正在發(fā)生的垃圾回收的誘因;
- -printcompilation 輸出JIT編譯的方法信息;
示例一:-class
顯示加載class的數(shù)量,及所占空間等信息。
jstat -class <pid>
- Loaded : 已經(jīng)裝載的類的數(shù)量
- Bytes : 裝載類所占用的字節(jié)數(shù)
- Unloaded:已經(jīng)卸載類的數(shù)量
- Bytes:卸載類的字節(jié)數(shù)
- Time:裝載和卸載類所花費(fèi)的時(shí)間
示例二: -compiler
顯示VM實(shí)時(shí)編譯(JIT)的數(shù)量等信息。
jstat -compiler <pid>
- Compiled:編譯任務(wù)執(zhí)行數(shù)量
- Failed:編譯任務(wù)執(zhí)行失敗數(shù)量
- Invalid :編譯任務(wù)執(zhí)行失效數(shù)量
- Time :編譯任務(wù)消耗時(shí)間
- FailedType:最后一個(gè)編譯失敗任務(wù)的類型
- FailedMethod:最后一個(gè)編譯失敗任務(wù)所在的類及方法
示例三: -gc
顯示gc相關(guān)的堆信息,查看gc的次數(shù),及時(shí)間。
jstat –gc <pid>
- S0C:年輕代中第一個(gè)survivor(幸存區(qū))的容量 (字節(jié))
- S1C:年輕代中第二個(gè)survivor(幸存區(qū))的容量 (字節(jié))
- S0U :年輕代中第一個(gè)survivor(幸存區(qū))目前已使用空間 (字節(jié))
- S1U :年輕代中第二個(gè)survivor(幸存區(qū))目前已使用空間 (字節(jié))
- EC :年輕代中Eden(伊甸園)的容量 (字節(jié))
- EU :年輕代中Eden(伊甸園)目前已使用空間 (字節(jié))
- OC :Old代的容量 (字節(jié))
- OU :Old代目前已使用空間 (字節(jié))
- MC:metaspace(元空間)的容量 (字節(jié))
- MU:metaspace(元空間)目前已使用空間 (字節(jié))
- YGC :從應(yīng)用程序啟動(dòng)到采樣時(shí)年輕代中g(shù)c次數(shù)
- YGCT :從應(yīng)用程序啟動(dòng)到采樣時(shí)年輕代中g(shù)c所用時(shí)間(s)
- FGC :從應(yīng)用程序啟動(dòng)到采樣時(shí)old代(全gc)gc次數(shù)
- FGCT :從應(yīng)用程序啟動(dòng)到采樣時(shí)old代(全gc)gc所用時(shí)間(s)
- GCT:從應(yīng)用程序啟動(dòng)到采樣時(shí)gc用的總時(shí)間(s)
示例四: -gccapacity
可以顯示,VM內(nèi)存中三代(young,old,perm)對(duì)象的使用和占用大小
jstat -gccapacity <pid>
- NGCMN :年輕代(young)中初始化(最小)的大小(字節(jié))
- NGCMX :年輕代(young)的最大容量 (字節(jié))
- NGC :年輕代(young)中當(dāng)前的容量 (字節(jié))
- S0C :年輕代中第一個(gè)survivor(幸存區(qū))的容量 (字節(jié))
- S1C : 年輕代中第二個(gè)survivor(幸存區(qū))的容量 (字節(jié))
- EC :年輕代中Eden(伊甸園)的容量 (字節(jié))
- OGCMN :old代中初始化(最小)的大小 (字節(jié))
- OGCMX :old代的最大容量(字節(jié))
- OGC:old代當(dāng)前新生成的容量 (字節(jié))
- OC :Old代的容量 (字節(jié))
- MCMN:metaspace(元空間)中初始化(最小)的大小 (字節(jié))
- MCMX :metaspace(元空間)的最大容量 (字節(jié))
- MC :metaspace(元空間)當(dāng)前新生成的容量 (字節(jié))
- CCSMN:最小壓縮類空間大小
- CCSMX:最大壓縮類空間大小
- CCSC:當(dāng)前壓縮類空間大小
- YGC :從應(yīng)用程序啟動(dòng)到采樣時(shí)年輕代中g(shù)c次數(shù)
- FGC:從應(yīng)用程序啟動(dòng)到采樣時(shí)old代(全gc)gc次數(shù)
示例五:-gcmetacapacity
metaspace 中對(duì)象的信息及其占用量。
jstat -gcmetacapacity<pid>
- MCMN:最小元數(shù)據(jù)容量
- MCMX:最大元數(shù)據(jù)容量
- MC:當(dāng)前元數(shù)據(jù)空間大小
- CCSMN:最小壓縮類空間大小
- CCSMX:最大壓縮類空間大小
- CCSC:當(dāng)前壓縮類空間大小
- YGC :從應(yīng)用程序啟動(dòng)到采樣時(shí)年輕代中g(shù)c次數(shù)
- FGC :從應(yīng)用程序啟動(dòng)到采樣時(shí)old代(全gc)gc次數(shù)
- FGCT :從應(yīng)用程序啟動(dòng)到采樣時(shí)old代(全gc)gc所用時(shí)間(s)
- GCT:從應(yīng)用程序啟動(dòng)到采樣時(shí)gc用的總時(shí)間(s)
示例六: -gcnew
年輕代對(duì)象的信息。
jstat -gcnew <pid>
- S0C :年輕代中第一個(gè)survivor(幸存區(qū))的容量 (字節(jié))
- S1C :年輕代中第二個(gè)survivor(幸存區(qū))的容量 (字節(jié))
- S0U :年輕代中第一個(gè)survivor(幸存區(qū))目前已使用空間 (字節(jié))
- S1U :年輕代中第二個(gè)survivor(幸存區(qū))目前已使用空間 (字節(jié))
- TT:持有次數(shù)限制
- MTT:最大持有次數(shù)限制
- DSS:期望的幸存區(qū)大小
- EC:年輕代中Eden(伊甸園)的容量 (字節(jié))
- EU :年輕代中Eden(伊甸園)目前已使用空間 (字節(jié))
- YGC :從應(yīng)用程序啟動(dòng)到采樣時(shí)年輕代中g(shù)c次數(shù)
- YGCT:從應(yīng)用程序啟動(dòng)到采樣時(shí)年輕代中g(shù)c所用時(shí)間(s)
示例七: -gcnewcapacity
年輕代對(duì)象的信息及其占用量
jstat -gcnewcapacity <pid>
- NGCMN :年輕代(young)中初始化(最小)的大小(字節(jié))
- NGCMX :年輕代(young)的最大容量 (字節(jié))
- NGC :年輕代(young)中當(dāng)前的容量 (字節(jié))
- S0CMX :年輕代中第一個(gè)survivor(幸存區(qū))的最大容量 (字節(jié))
- S0C :年輕代中第一個(gè)survivor(幸存區(qū))的容量 (字節(jié))
- S1CMX :年輕代中第二個(gè)survivor(幸存區(qū))的最大容量 (字節(jié))
- S1C:年輕代中第二個(gè)survivor(幸存區(qū))的容量 (字節(jié))
- ECMX:年輕代中Eden(伊甸園)的最大容量 (字節(jié))
- EC:年輕代中Eden(伊甸園)的容量 (字節(jié))
- YGC:從應(yīng)用程序啟動(dòng)到采樣時(shí)年輕代中g(shù)c次數(shù)
- FGC:從應(yīng)用程序啟動(dòng)到采樣時(shí)old代(全gc)gc次數(shù)
示例八: -gcold
old代對(duì)象的信息
jstat -gcold <pid>
- MC :metaspace(元空間)的容量 (字節(jié))
- MU:metaspace(元空間)目前已使用空間 (字節(jié))
- CCSC:壓縮類空間大小
- CCSU:壓縮類空間使用大小
- OC:Old代的容量 (字節(jié))
- OU:Old代目前已使用空間 (字節(jié))
- YGC:從應(yīng)用程序啟動(dòng)到采樣時(shí)年輕代中g(shù)c次數(shù)
- FGC:從應(yīng)用程序啟動(dòng)到采樣時(shí)old代(全gc)gc次數(shù)
- FGCT:從應(yīng)用程序啟動(dòng)到采樣時(shí)old代(全gc)gc所用時(shí)間(s)
- GCT:從應(yīng)用程序啟動(dòng)到采樣時(shí)gc用的總時(shí)間(s)
示例九:-gcoldcapacity
old代對(duì)象的信息及其占用量
jstat -gcoldcapacity <pid>
- OGCMN :old代中初始化(最小)的大小 (字節(jié))
- OGCMX :old代的最大容量(字節(jié))
- OGC :old代當(dāng)前新生成的容量 (字節(jié))
- OC :Old代的容量 (字節(jié))
- YGC :從應(yīng)用程序啟動(dòng)到采樣時(shí)年輕代中g(shù)c次數(shù)
- FGC :從應(yīng)用程序啟動(dòng)到采樣時(shí)old代(全gc)gc次數(shù)
- FGCT :從應(yīng)用程序啟動(dòng)到采樣時(shí)old代(全gc)gc所用時(shí)間(s)
- GCT:從應(yīng)用程序啟動(dòng)到采樣時(shí)gc用的總時(shí)間(s)
示例十: - gcutil
統(tǒng)計(jì)gc信息
jstat -gcutil <pid>
- S0 :年輕代中第一個(gè)survivor(幸存區(qū))已使用的占當(dāng)前容量百分比
- S1 :年輕代中第二個(gè)survivor(幸存區(qū))已使用的占當(dāng)前容量百分比
- E :年輕代中Eden(伊甸園)已使用的占當(dāng)前容量百分比
- O :old代已使用的占當(dāng)前容量百分比
- P :perm代已使用的占當(dāng)前容量百分比
- YGC :從應(yīng)用程序啟動(dòng)到采樣時(shí)年輕代中g(shù)c次數(shù)
- YGCT :從應(yīng)用程序啟動(dòng)到采樣時(shí)年輕代中g(shù)c所用時(shí)間(s)
- FGC :從應(yīng)用程序啟動(dòng)到采樣時(shí)old代(全gc)gc次數(shù)
- FGCT :從應(yīng)用程序啟動(dòng)到采樣時(shí)old代(全gc)gc所用時(shí)間(s)
- GCT:從應(yīng)用程序啟動(dòng)到采樣時(shí)gc用的總時(shí)間(s)
示例十一:-gccause
顯示垃圾回收的相關(guān)信息(通-gcutil),同時(shí)顯示最后一次或當(dāng)前正在發(fā)生的垃圾回收的誘因。
jstat -gccause <pid>
- LGCC:最后一次GC原因
- GCC:當(dāng)前GC原因(No GC 為當(dāng)前沒有執(zhí)行GC)
示例十二: -printcompilation
當(dāng)前VM執(zhí)行的信息。
jstat -printcompilation <pid>
- Compiled :編譯任務(wù)的數(shù)目
- Size :方法生成的字節(jié)碼的大小
- Type:編譯類型
- Method:類名和方法名用來標(biāo)識(shí)編譯的方法。類名使用/做為一個(gè)命名空間分隔符。方法名是給定類中的方法。上述格式是由-XX:+PrintComplation選項(xiàng)進(jìn)行設(shè)置的