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