作用
jstat的主要作用就是對Java應用程序的資源和性能進行實時監控的命令行工具,主要包括GC情況和Heap Size資源使用情況。
jstat命令格式
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
參數解釋:
- option 常見的都是使用-gcutil查看gc情況,其他可選項見下圖。
- vmid : VM的進程號,即當前運行的java進程號。
- interval : 間隔時間,單位為秒或毫秒
- count:打印次數,如果缺省則打印無數次。
option選項代表着用戶希望查詢的虛擬機信息,主要分為3類:類加載、垃圾收集和運行期編譯狀況。具體選項見下圖:

參數interval和count代表查詢間隔和次數,如果省略這兩個參數,說明只查詢一次。假設需要每250毫秒查詢一次進程5828垃圾收集狀況,一共查詢5次,那命令行如下:
jstat -gc 5828 250 5
垃圾回收統計
查看gc的統計信息,關注點 主要是 已使用/總空間的占比情況。
jstat -gcutil 31798
運行截圖(JDK1.8):

參數含義:
| 參數 | 描述 |
|---|---|
| S0 | 年輕代中第一個survivor(幸存區)已使用的占當前容量百分比 |
| s1 | 年輕代中第二個survivor(幸存區)已使用的占當前容量百分比 |
| E | 年輕代中Eden已使用的占當前容量百分比 |
| O | old代已使用的占當前容量百分比 |
| M | 元空間(MetaspaceSize)已使用的占當前容量百分比 |
| CCS | 壓縮使用比例 |
| YGC | 年輕代垃圾回收次數 |
| FGC | 老年代垃圾回收次數 |
| FGCT | 老年代垃圾回收消耗時間 |
| GCT | 垃圾回收消耗總時間 |
堆內存使用情況統計
單位KB。
jstat -gccapacity 3400 20 20
運行截圖(JDK1.8):

| 參數 | 描述 |
|---|---|
| NGCMN | 新生代最小容量 |
| NGCMX | 新生代最大容量 |
| NGC | 當前新生代容量 |
| S0C | 第一個幸存區大小 |
| S1C | 第二個幸存區的大小 |
| EC | 伊甸園區的大小 |
| OGCMN | 老年代最小容量 |
| OGCMX | 老年代最大容量 |
| OGC | 當前老年代大小 |
| OC | 當前老年代大小 |
| MCMN | 最小元數據容量 |
| MCMX | 最大元數據容量 |
| MC | 當前元數據空間大小 |
| CCSMN | 最小壓縮類空間大小 |
| CCSMX | 最大壓縮類空間大小 |
| CCSC | 當前壓縮類空間大小 |
| YGC | 年輕代gc次數 |
| FGC | 老年代GC次數 |
類加載統計
jstat -class 3400 1000 100
| 參數 | 描述 |
|---|---|
| Loaded | 加載class的數量 |
| Bytes | 所占用空間大小 |
| Unloaded | 未加載數量 |
| Bytes | 未加載占用空間 |
| Time | 時間 |
