1、jstat統計維度
#jstat 可以通過 -options 選項,查看系統所支持選項 [root@salt opt]# jstat -options -class -compiler -gc -gccapacity -gccause -gcmetacapacity -gcnew -gcnewcapacity -gcold -gcoldcapacity -gcutil -printcompilation
2、詳細說明
jstat –class<pid>
[root@salt opt]# jps
3261 Bootstrap
9389 Jps
[root@saltstack opt]# jstat -class 3261
Loaded Bytes Unloaded Bytes Time
3614 7587.0 0 0.0 2.06
字段解釋:
Loaded:加載了的類的數量
Bytes:加載了的類的大小,單為 Kb
Unloaded:卸載了的類的數量
Bytes:卸載了的類的大小,單為 Kb
Time:花在類的加載及卸載的時間
jstat -compiler <pid>
#顯示 VM 實時編譯的數量等信息。HotSpot 中即時編譯器編譯情況的統計
[root@salt opt]# jstat -compiler 3261
Compiled Failed Invalid Time FailedType FailedMethod
2295 0 0 12.31 0
解釋:
Compiled:編譯任務執行的次數
Failed:編譯任務執行失敗的次數
Invalid:編譯任務非法執行的次數
Time:執行編譯花費的時間
FailedType:最后一次編譯失敗的編譯類型
FailedMethod:最后一次編譯失敗的類名及方法名
jstat -gc <pid>
#顯示gc的信息,查看 gc 的次數,及時間
[root@salt opt]# jstat -gc 3261
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
20480.0 25600.0 20459.5 0.0 216064.0 144368.7 75264.0 40355.4 15104.0 14732.0 1792.0 1637.8 8 0.185 1 0.077 0.262
解釋:
S0C:新生代中 Survivor space 中 S0 當前容量的大小(KB)
S1C:新生代中 Survivor space 中 S1 當前容量的大小(KB)
S0U:新生代中 Survivor space 中 S0 容量使用的大小(KB)
S1U:新生代中 Survivor space中S1容量使用的大小(KB)
EC:Eden space 當前容量的大小(KB)
EU:Eden space 容量使用的大小(KB)
OC:Old space 當前容量的大小(KB)
OU:Old space 使用容量的大小(KB)
PC:Permanent space 當前容量的大小(KB)
PU:Permanent space 使用容量的大小(KB)
YGC:從應用程序啟動到采樣時發生 Young GC 的次數
YGCT:從應用程序啟動到采樣時 Young GC 所用的時間(秒)
FGC:從應用程序啟動到采樣時發生 Full GC 的次數
FGCT:從應用程序啟動到采樣時 Full GC 所用的時間(秒)
GCT:T 從應用程序啟動到采樣時用於垃圾回收的總時間(單位秒),它的值等於 YGC+FGC
jstat -gccapacity <pid>
#顯示,VM 內存中三代(young,old,perm)對象的使用和占用大小。新生代、老生代及持久代的存儲容量情況
[root@salt opt]# jstat -gccapacity 3261
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC
20992.0 336896.0 293376.0 20480.0 25600.0 216064.0 42496.0 674816.0 75264.0 75264.0 0.0 1062912.0 15104.0 0.0 1048576.0 1792.0 8 1
解釋:
NGCMN:新生代的最小容量大小(KB)
NGCMX:新生代的最大容量大小(KB)
NGC:當前新生代的容量大小(KB)
S0C:當前新生代中survivor space 0的容量大小(KB)
S1C:當前新生代中survivor space 1的容量大小(KB)
EC:Eden space當前容量的大小(KB)
OGCMN:老生代的最小容量大小(KB)
OGCMX:老生代的最大容量大小(KB)
OGC:當前老生代的容量大小(KB)
OC:當前老生代的空間容量大小(KB)
PGCMN:持久代的最小容量大小(KB)
PGCMX:持久代的最大容量大小(KB)
PGC:當前持久代的容量大小(KB)
PC:當前持久代的空間容量大小(KB)
YGC:從應用程序啟動到采樣時發生 Young GC 的次數
FGC:從應用程序啟動到采樣時發生 Full GC 的次數
jstat -gcutil <pid>
#統計 gc 信息,新生代、老生代及持代垃圾收集的情況
[root@salt opt]# jstat -gcutil 3261 1000 3
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
99.90 0.00 66.82 53.62 97.54 91.40 8 0.185 1 0.077 0.262
99.90 0.00 66.82 53.62 97.54 91.40 8 0.185 1 0.077 0.262
99.90 0.00 66.82 53.62 97.54 91.40 8 0.185 1 0.077 0.262
解釋:
S0:Heap上的 Survivor space 0 區已使用空間的百分比
S1:Heap上的 Survivor space 1 區已使用空間的百分比
E:Heap上的 Eden space 區已使用空間的百分比
O:Heap上的 Old space 區已使用空間的百分比
P:Perm space 區已使用空間的百分比
YGC:從應用程序啟動到采樣時發生 Young GC 的次數
YGCT:從應用程序啟動到采樣時 Young GC 所用的時間(單位秒)
FGC:從應用程序啟動到采樣時發生 Full GC 的次數
FGCT:從應用程序啟動到采樣時 Full GC 所用的時間(單位秒)
GCT:從應用程序啟動到采樣時用於垃圾回收的總時間(單位秒),它的值等於 YGC+FGC
參數:
3261:PID
1000:1000毫秒(1秒),每隔1秒統計一次
3:統計3次
jstat -gcnew <pid>
#年輕代對象的信息,新生代垃圾收集的情況
[root@salt opt]# jstat -gcnew 3261
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
20480.0 25600.0 20459.5 0.0 3 15 25600.0 216064.0 146535.0 8 0.185
解釋:
S0C:當前新生代中 survivor space 0 的容量大小(KB)
S1C:當前新生代中 survivor space 1 的容量大小(KB)
S0U:S0 已經使用的大小(KB)
S1U:S1 已經使用的大小(KB)
TT:Tenuring threshold,要了解這個參數,我們需要了解一點Java內存對象的結構,在Sun JVM中,(除了數組之外的)對象都有兩個機器字
(words)的頭部。第一個字中包含這個對象的標示哈希碼以及其他一些類似鎖狀態和等標識信息,第二個字中包含一個指向對象的類的引用,
其中第二個字節就會被垃圾收集算法使用到。
在新生代中做垃圾收集的時候,每次復制一個對象后,將增加這個對象的收集計數,當一個對象在新生代中被復制了一定次數后,該算法即判定
該對象是長周期的對象,把他移動到老生代,這個閾值叫着tenuring threshold。這個閾值用於表示某個/些在執行批定次數youngGC后還活着的
對象,即使此時新生的的Survior沒有滿,也同樣被認為是長周期對象,將會被移到老生代中。
MTT:Maximum tenuring threshold,用於表示TT的最大值。
DSS:Desired survivor size (KB)
EC:Eden space 當前容量的大小(KB)
EU:Eden space 已經使用的大小(KB)
YGC:從應用程序啟動到采樣時發生 Young GC 的次數
YGCT:從應用程序啟動到采樣時 Young GC 所用的時間(單位秒)
jstat -gcnewcapacity <pid>
#年輕代對象的信息及其占用量,新生代的存儲容量情況
[root@salt opt]# jstat -gcnewcapacity 3261
NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC
20992.0 336896.0 293376.0 112128.0 20480.0 112128.0 25600.0 335872.0 216064.0 8 1
解釋:
NGCMN:新生代的最小容量大小(KB)
NGCMX:新生代的最大容量大小(KB)
NGC:當前新生代的容量大小(KB)
S0CMX:新生代中 SO 的最大容量大小(KB)
S0C:當前新生代中 SO 的容量大小(KB)
S1CMX:新生代中 S1 的最大容量大小(KB)
S1C:當前新生代中 S1 的容量大小(KB)
ECMX:新生代中 Eden 的最大容量大小(KB)
EC:當前新生代中 Eden 的容量大小(KB)
YGC:從應用程序啟動到采樣時發生 Young GC 的次數
FGC:從應用程序啟動到采樣時發生 Full GC 的次數
jstat -gcold <pid>
#old 代對象的信息,老生代及持久代發生 GC 的情況
[root@salt opt]# jstat -gcold 3261
MC MU CCSC CCSU OC OU YGC FGC FGCT GCT
15104.0 14732.0 1792.0 1637.8 75264.0 40355.4 8 1 0.077 0.262
解釋:
PC:當前持久代容量的大小(KB)
PU:持久代使用容量的大小(KB)
OC:當前老年代容量的大小(KB)
OU:老年代使用容量的大小(KB)
YGC:從應用程序啟動到采樣時發生 Young GC 的次數
FGC:從應用程序啟動到采樣時發生 Full GC 的次數
FGCT:從應用程序啟動到采樣時 Full GC 所用的時間(單位秒)
GCT:從應用程序啟動到采樣時用於垃圾回收的總時間(單位秒),它的值等於YGC+FGC
jstat -gcoldcapacity <pid>
#old 代對象的信息及其占用量,老生代的存儲容量情況
[root@saltstack opt]# jstat -gcoldcapacity 3261
OGCMN OGCMX OGC OC YGC FGC FGCT GCT
42496.0 674816.0 75264.0 75264.0 8 1 0.077 0.262
解釋:
OGCMN:老生代的最小容量大小(KB)
OGCMX:老生代的最大容量大小(KB)
OGC:當前老生代的容量大小(KB)
OC:當前新生代的空間容量大小(KB)
YGC:從應用程序啟動到采樣時發生 Young GC 的次數
FGC:從應用程序啟動到采樣時發生 Full GC 的次數
FGCT:從應用程序啟動到采樣時 Full GC 所用的時間(單位秒)
GCT:從應用程序啟動到采樣時用於垃圾回收的總時間(單位秒),它的值等於YGC+FGC
jstat -gcmetacapacity <pid>
#perm 對象的信息及其占用量
[root@saltstack opt]# jstat -gcmetacapacity 3261
MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC FGCT GCT
0.0 1062912.0 15104.0 0.0 1048576.0 1792.0 8 1 0.077 0.262
解釋:
MCMN:最小元空間容量(kB)。
MCMX:最大元空間容量(kB)。
MC:元空間容量(kB)。
CCSMN:壓縮類空間最小容量(kB)。
CCSMX:壓縮類空間最大容量(kB)。
YGC:年輕一代GC事件的數量。
FGC:完整GC事件的數量。
FGCT:完全垃圾收集時間。
GCT:垃圾收集總時間。
jstat -gcpermcapacity Java 8 中已經沒有這個命令了,改為 jstat -gcmetacapacity 了
jstat -printcompilation <pid>
#當前 VM 執行的信息
[root@salt opt]# jstat -printcompilation 3261
Compiled Size Type Method
2335 1032 1 java/lang/Throwable$WrappedPrintWriter println
解釋:
Compiled:編譯任務執行的次數
Size:方法的字節碼所占的字節數
Type:編譯類型
Method:指定確定被編譯方法的類名及方法名,類名中使名“/”而不是“.”做為命名分隔符,方法名是被指定的類中的方法,這兩個字段的格式是由
HotSpot中的“-XX:+PrintComplation”選項確定的。