JDK的bin目錄下給咱們提供了不少好用的工具:apache
- jps JVM Process Status Tool, 顯示指定系統內全部的HotSpot虛擬機進程
- jstat JVM Statistics Monitoring Tool, 用於手機HotSpot虛擬機各方面的運行數據
- jinfo Configuration Info for Java, 顯示虛擬機配置信息
- jmap Memory Map for Java, 生成虛擬機的內存轉儲快照(heapdump文件)
- jhat JVM Heap Demp Browser, 用於分析heapdump文件,它會簡歷一個HTTP/HTML服務器,讓用戶能夠在瀏覽器上查看分析結果
- jstack Stack Trace for Java, 顯示虛擬機的線程快照
其中jstat是最經常使用的工具瀏覽器
jstat:服務器
jstat [-命令選項] [vmid] [間隔時間/毫秒] [查詢次數]eclipse
注意:使用的jdk版本是jdk8.工具
類加載統計:
jstat -class PIDspa
Loaded Bytes Unloaded Bytes Time線程
15756 17355.6 0 0.0 11.29對象
- Loaded:加載class的數量
- Bytes:所佔用空間大小
- Unloaded:未加載數量
- Bytes:未加載佔用空間
- Time:時間
編譯統計
jstat -compiler PID進程
Compiled Failed Invalid Time FailedType FailedMethodip
9142 1 0 5.01 1 org/apache/felix/resolver/ResolverImpl mergeCandidatePackages
- Compiled:編譯數量。
- Failed:失敗數量
- Invalid:不可用數量
- Time:時間
- FailedType:失敗類型
- FailedMethod:失敗的方法
垃圾回收統計
jstat -gc PID
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
20480.0 20480.0 0.0 13115.3 163840.0 113334.2 614400.0 436045.7 63872.0 61266.5 0.0 0.0 149 3.440 8 0.295 3.735
- S0C:第一個倖存區的大小
- S1C:第二個倖存區的大小
- S0U:第一個倖存區的使用大小
- S1U:第二個倖存區的使用大小
- EC:伊甸園區的大小
- EU:伊甸園區的使用大小
- OC:老年代大小
- OU:老年代使用大小
- MC:方法區大小
- MU:方法區使用大小
- CCSC:壓縮類空間大小
- CCSU:壓縮類空間使用大小
- YGC:年輕代垃圾回收次數
- YGCT:年輕代垃圾回收消耗時間
- FGC:老年代垃圾回收次數
- FGCT:老年代垃圾回收消耗時間
- GCT:垃圾回收消耗總時間
堆內存統計
jstat -gccapacity PID
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC
204800.0 204800.0 204800.0 20480.0 20480.0 163840.0 614400.0 614400.0 614400.0 614400.0 0.0 63872.0 63872.0 0.0 0.0 0.0 149 8
- NGCMN:新生代最小容量
- NGCMX:新生代最大容量
- NGC:當前新生代容量
- S0C:第一個倖存區大小
- S1C:第二個倖存區的大小
- EC:伊甸園區的大小
- OGCMN:老年代最小容量
- OGCMX:老年代最大容量
- OGC:當前老年代大小
- OC:當前老年代大小
- MCMN:最小元數據容量
- MCMX:最大元數據容量
- MC:當前元數據空間大小
- CCSMN:最小壓縮類空間大小
- CCSMX:最大壓縮類空間大小
- CCSC:當前壓縮類空間大小
- YGC:年輕代gc次數
- FGC:老年代GC次數
新生代垃圾回收統計
jstat -gcnew PID
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
40960.0 40960.0 25443.1 0.0 15 15 20480.0 327680.0 222697.8 12 0.736
- S0C:第一個倖存區大小
- S1C:第二個倖存區的大小
- S0U:第一個倖存區的使用大小
- S1U:第二個倖存區的使用大小
- TT:對象在新生代存活的次數
- MTT:對象在新生代存活的最大次數
- DSS:指望的倖存區大小
- EC:伊甸園區的大小
- EU:伊甸園區的使用大小
- YGC:年輕代垃圾回收次數
- YGCT:年輕代垃圾回收消耗時間
新生代內存統計
jstat -gcnewcapacity PID
NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC
409600.0 409600.0 409600.0 40960.0 40960.0 40960.0 40960.0 327680.0 327680.0 12 0
- NGCMN:新生代最小容量
- NGCMX:新生代最大容量
- NGC:當前新生代容量
- S0CMX:最大幸存1區大小
- S0C:當前倖存1區大小
- S1CMX:最大幸存2區大小
- S1C:當前倖存2區大小
- ECMX:最大伊甸園區大小
- EC:當前伊甸園區大小
- YGC:年輕代垃圾回收次數
- FGC:老年代回收次數
老年代垃圾回收統計
jstat -gcold PID
MC MU CCSC CCSU OC OU YGC FGC FGCT GCT
33152.0 31720.8 0.0 0.0 638976.0 184173.0 12 0 0.000 0.736
- MC:方法區大小
- MU:方法區使用大小
- CCSC:壓縮類空間大小
- CCSU:壓縮類空間使用大小
- OC:老年代大小
- OU:老年代使用大小
- YGC:年輕代垃圾回收次數
- FGC:老年代垃圾回收次數
- FGCT:老年代垃圾回收消耗時間
- GCT:垃圾回收消耗總時間
老年代內存統計
jstat -gcoldcapacity PID
OGCMN OGCMX OGC OC YGC FGC FGCT GCT
638976.0 638976.0 638976.0 638976.0 12 0 0.000 0.736
- OGCMN:老年代最小容量
- OGCMX:老年代最大容量
- OGC:當前老年代大小
- OC:老年代大小
- YGC:年輕代垃圾回收次數
- FGC:老年代垃圾回收次數
- FGCT:老年代垃圾回收消耗時間
- GCT:垃圾回收消耗總時間
元數據空間統計
jstat -gcmetacapacity PID
MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC FGCT GCT
0.0 33152.0 33152.0 0.0 0.0 0.0 12 0 0.000 0.736
- MCMN:最小元數據容量
- MCMX:最大元數據容量
- MC:當前元數據空間大小
- CCSMN:最小壓縮類空間大小
- CCSMX:最大壓縮類空間大小
- CCSC:當前壓縮類空間大小
- YGC:年輕代垃圾回收次數
- FGC:老年代垃圾回收次數
- FGCT:老年代垃圾回收消耗時間
- GCT:垃圾回收消耗總時間
總結垃圾回收統計
jstat -gcutil PID
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
62.12 0.00 81.36 28.82 95.68 - 12 0.736 0 0.000 0.736
- S0:倖存1區當前使用比例
- S1:倖存2區當前使用比例
- E:伊甸園區使用比例
- O:老年代使用比例
- M:元數據區使用比例
- CCS:壓縮使用比例
- YGC:年輕代垃圾回收次數
- FGC:老年代垃圾回收次數
- FGCT:老年代垃圾回收消耗時間
- GCT:垃圾回收消耗總時間
JVM編譯方法統計
jstat -printcompilation PID
Compiled Size Type Method
4608 16 1 org/eclipse/emf/common/util/SegmentSequence$SegmentSequencePool$SegmentsAccessUnit reset
- Compiled:最近編譯方法的數量
- Size:最近編譯方法的字節碼數量
- Type:最近編譯方法的編譯類型。
- Method:方法名標識。