本篇記錄本人在學習JDK監控工具的一些筆記。JDK是1.8java
JPS:查看java的進程命令工具
左邊的數字是進程ID,對應的是進程的名稱。學習
jstat:查看運行時狀態信息。blog
一、-class:監控類裝載,卸載數量,總空間以及消費的時間進程
jstat -class + 進程ID內存
Loaded:加載class的數量ci
Bytes:class字節大小it
Unloaded:未加載數量io
Bytes:未加載Class的字節大小console
Time:加載時間
二、-gc:垃圾回收堆的行爲統計(經常使用命令)
jstat -gc +進程ID [多少毫秒打印一次] [一共打印多少次]
SOC | survivor0總容量 |
S1C | survivor1總容量 |
S0U | survivor0已經使用的容量 |
S1U | survivor1已經使用的容量 |
EC | Eden區總容量 |
EU | Eden區已經使用的容量 |
OC | 老年區總容量 |
OU | 老年區已經使用的容量 |
MC | 方法區的總容量 |
MU | 方法區已經使用的容量 |
CCSC | 壓縮類空間大小 |
CCSU | 壓縮類空間使用的大小 |
YGC | 年輕代垃圾回收次數 |
YGCT | 年輕代垃圾回收的時間 |
FGC | 老年代垃圾回收的次數 |
FGCT | 老年代垃圾回收的時間 |
GCT | 垃圾回收總消耗時間 |
由圖可得,MajorGC執行了4次,FullGC執行了一次,STW 0.002s,總消耗的時間爲0.016s.
總GC消耗的時間(GCT) = YGC + FGCT
一般,64位JVM消耗的內存會比32位的大1.5倍。由於在64位JVM下,長度會翻倍。
三、-gccapacity:同-gc,同時還會輸出JAVA堆各區域的使用到的最大、最小空間
jstat -gccapacity +進程ID
NGCMN:新生代佔用的最小空間 OGCMN:老年代佔用的最小空間 MC:當前元數據的空間大小
NGCMX:新生代佔用的最大空間 OGCMX:老年代佔用的最大空間 CCSMN:最小壓縮類空間大小
NGC:當前新生代的空間 OGC:老年代已用的空間 CCSMX:最大壓縮類空間大小
SOC:survivor0的空間總量 OC:當前老年的容量(KB) CCSC:當前壓縮類空間大小
S1C:survivor1的空間總量 MCMN:最小元數據容量 YGC:yongGC(Major GC)回收次數
EC:Eden區 的總容量 MCMX:最大元數據容量 FGC:Full GC回收次數
四、-gcutil:同-gc,輸出的是已使用空間佔總空間的百分比
SO:survivor0區當前的使用比例 O:老年代使用的比例 YGC:年輕代垃圾回收次數 FGCT:老年代垃圾回收時間
S1:survivor1區當前使用的比例 M:元數據區使用的比例 YGCT:年輕代垃圾回收的耗時 GCT:垃圾回收的總耗時
E:Eden區當前使用的比例 CSS:壓縮使用比例 FGC:老年代垃圾回收次數
五、-gccause:在-gcutil的基礎上附加最近兩次垃圾回收時間的緣由
LGCC:最近垃圾回收的緣由 GCC:當前垃圾回收的緣由 AllocationFailure:內存分配失敗
兩個可視化工具:jconsole jvisualvm