jstat:虛擬機統計信息監視工具(JVM Statistics Monitoring Tool)
說明:監視虛擬機的各種運行狀態:類裝載、內存、垃圾收集等運行數據。
格式:jstat [option] PID [interval] [count]
參數:
option:
-class 查看類裝載的信息
-gc 查看java堆的狀況
-gccapacity 查看堆中各個區域的最小容量和最大容量
-gcutil 查看堆中各個區域已使用空間佔其總空間的百分比
-gccause 與-gcutil相同,另外還輸出了:導致上一次GC的原因和當前GC的原因
-gcnew 查看堆中新生代的狀況
-gcnewcapacity 查看堆中新生代的最小容量和最大容量
-gcold 查看堆中老年代的狀況
-gcoldcapacity 查看堆中老年代的最小容量和最大容量
-gcpermcapacity 查看堆中永久代的最小容量和最大容量
-gcmetacapacity 查看元數據空間的當前大小、最大容量和最小容量(jdk1.8)
interval:表示查詢的間隔時間,單位:毫秒
count: 表示查詢的次數,如果interval和count都省略,則默認爲只查詢一次。
查詢結果標識:
通用:
Minor GC(Young GC):
YGC: 進程從啓動以來Minor GC的次數
YGCT:進程從啓動以來Minor GC所花費的時間
Full GC:FGC表示次數,FGCT表示時間
FGC: 進程從啓動以來Full GC的次數
FGCT:進程從啓動以來Full GC所花費的時間
GCT: Minor GC和Full GC總共花費的時間
jstat -gc
jstat -gcutil
jstat -gccause
新生代(Young)中的Eden區:E
E: Eden區已使用的空間佔其總空間的百分比
EC:Eden區的容量(Eden Capacity)
EU:Eden區已使用的空間(Eden Use)
新生代(Young)中的Survivor區:S0 S1
老年代(Old):O
永久代(Permanent):P
jdk8中:
元數據空間(Metaspace):M
元數據空間中的壓縮類空間(Compressed Class Space):CCS
說明:
1>jdk8中已經沒有永久代了,取而代之的是元空間,元空間佔用的是本地內存,不佔用虛擬機的內存。
2>Metaspace由Klass Metaspace和NoKlass Metaspace兩部分組成。
3>M表示Metaspace已使用的百分比,CCS表示Klass Metaspace已使用的百分比(CCS=CCSU/CCSC)。
4>M的值達到了90%以上,不一定能說明metaspace已經用了很多了,因爲內存是慢慢commit的,所以我們的分母是慢慢變大的,不過當我們commit到一定量的時候就不會再增長了。
5>根據MC,MU,CCSC,CCSU來判斷metaspace的狀態更靠譜。(注:可以在jstat -gc 中看到MU)
注:S0/S0C/S0U、S1/S1C/S1U、O/OC/OU、P/PC/PU、M/MC/MU、CCS/CCSC/CCSU 與 E/EC/EU類似
LGCC:最後一次GC發生的原因
GCC: 當前GC發生的原因
jstat -gccapacity
NGCMN:新生代的最小(初始化)容量
NGCMX:新生代的最大容量
NGC: 新生代當前的容量
ECMX: 新生代中Eden區的最大容量
S0CMX、S1CMX:新生代中Survivor區的最大容量
OGCMN:老年代的最小(初始化)容量
OGCMX:老年代的最大容量
OGC: 老年代當前的容量
PGCMN:永久代的最小(初始化)容量
PGCMX:永久代的最大容量
PGC: 永久代當前的容量
jdk8中:
MCMN: 元數據空間最小容量
MCMX: 元數據空間最大容量
MC: 當前元數據空間的大小
CCSMN: 壓縮類空間CCS(即:Klass Metaspace)的最小容量
CCSMX: 壓縮類空間CCS(即:Klass Metaspace)的最大容量
CCSC: 當前壓縮類空間CCS(即:Klass Metaspace)的大小
jstat -gcnew
TT: 老年化閾值。被移動到老年代之前,在新生代空存活的次數
MTT:最大老年化閾值。
DSS:倖存者區所需空間大小
注意:單位是KB