概述
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>
示例十二: -printcompilation
jstat -printcompilation <pid>
Compiled :編譯任務的數目
Size :方法生成的字節碼的大小
Type:編譯類型
Method:類名和方法名用來標識編譯的方法。類名使用/做爲一個命名空間分隔符。方法名是給定類中的方法。上述格式是由-XX:+PrintComplation選項進行設置的
附 jvm學習資料