jstat 用于監視虛擬機運行時狀態信息的命令,它可以顯示出虛擬機進程中的類裝載、內存、垃圾收集、JIT 編譯等運行數據。
命令的使用格式如下。
jstat [option] LVMID [interval] [count]
各個參數詳解:
- option:操作參數
- LVMID:本地虛擬機進程ID
- interval:連續輸出的時間間隔
- count:連續輸出的次數
option 參數內容詳解!
option 參數 | 注釋 |
---|---|
class | class loader的行為統計 |
compiler | HotSpt JIT編譯器行為統計 |
gc | 垃圾回收堆的行為統計 |
gccapacity | 各個垃圾回收代容量和他們相應的空間統計 |
gcutil | 垃圾回收統計概述 |
gccause | 垃圾收集統計概述(同-gcutil),附加最近兩次垃圾回收事件的原因 |
gcnew | 新生代行為統計 |
gcnewcapacity | 新生代與其相應的內存空間的統計 |
gcold | 年老代和永生代行為統計 |
gcoldcapacity | 年老代行為統計 |
gcmetacapacity | 元空間行為統計 |
printcompilation | HotSpot編譯方法統計 |
option 參數使用如下。
1、示例參數:class
-class
參數用于監視類裝載、卸載數量、總空間以及耗費的時間。
在操作系統終端輸入如下命令,即可查看相關信息,示例如下。
$ jstat -class 20094
Loaded Bytes Unloaded Bytes Time12988 23508.0 0 0.0 30.21
各個參數解讀如下:
- Loaded : 加載class的數量
- Bytes : class字節大小
- Unloaded : 未加載class的數量
- Bytes : 未加載class的字節大小
- Time : 加載時間
2、示例參數:compiler
-compiler
參數用于輸出 JIT 編譯過的方法數量耗時等。
在操作系統終端輸入如下命令,即可查看相關信息,示例如下。
$ jstat -compiler 20094
Compiled Failed Invalid Time FailedType FailedMethod14524 5 0 43.33 1 org/springframework/core/annotation/AnnotationsScanner processMethodHierarchy
各個參數解讀如下:
- Compiled : 編譯數量
- Failed : 編譯失敗數量
- Invalid : 無效數量
- Time : 編譯耗時
- FailedType : 失敗類型
- FailedMethod : 失敗方法的全限定名
3、示例參數:gc
-gc
參數用于垃圾回收堆的行為統計,屬于常用命令。
在操作系統終端輸入如下命令,即可查看相關信息,示例如下。
$ jstat -gc 20094S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
18432.0 18944.0 0.0 10133.7 281088.0 197255.5 139776.0 55324.5 70420.0 66352.5 9020.0 8405.8 25 0.599 3 0.673 1.273
其中 C 表示 Capacity 總容量,U 表示 Used 已使用的容量。
各個參數解讀如下:
- S0C:survivor0區的總容量
- S1C:survivor1區的總容量
- S0U:survivor0區已使用的容量
- S1U:survivor1區已使用的容量
- EC:Eden區的總容量
- EU:Eden區已使用的容量
- OC:Old區的總容量
- OU:Old區已使用的容量
- MC:泛指Metaspace區的總容量
- MU:泛指Metaspace區已使用的容量
- CCSC:泛指類壓縮空間(Compressed class space,屬于Metaspace區的一部分)的總容量
- CCSU:泛指類壓縮空間(Compressed class space,屬于Metaspace區的一部分)已使用的容量
- YGC:新生代GC次數
- YGCT:新生代GC總耗時
- FGC:Full GC次數
- FGCT:Full GC總耗時
- GCT:GC總耗時
還可以通過如下方式,來詳細的監控 gc 回收情況,示例如下。
jstat -gc 20094 2000 20
以上的命令表示每隔 2000ms 輸出進程號為 7140 的 gc 回收情況,一共輸出 20次。
輸出部分內容如下!
4、示例參數:gccapacity
-gccapacity
參數和-gc
一樣,不過還會輸出 Java 堆各區域使用到的最大、最小空間。
在操作系統終端輸入如下命令,即可查看相關信息,示例如下。
$ jstat -gccapacity 20094NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC43520.0 698880.0 355840.0 18432.0 18944.0 281088.0 87552.0 1398272.0 139776.0 139776.0 0.0 1110016.0 70420.0 0.0 1048576.0 9020.0 25 3
各個參數解讀如下:
- NGCMN : 新生代占用的最小空間
- NGCMX : 新生代占用的最大空間
- NGC:當前新生代的容量
- OGCMN : 老年代占用的最小空間
- OGCMX : 老年代占用的最大空間
- OGC:當前老年代的容量
- MCMN : Metaspace區占用的最小空間
- MCMX : Metaspace區占用的最大空間
- MC:當前Metaspace區的容量
- CCSMN : Compressed class space區占用的最小空間
- CCSMX : Compressed class space區占用的最大空間
- CCSC:當前Compressed class space區的容量
5、示例參數:gcutil
-gcutil
參數同-gc
,不過輸出的是已使用空間占總空間的百分比。
在操作系統終端輸入如下命令,即可查看相關信息,示例如下。
$ jstat -gcutil 20094S0 S1 E O M CCS YGC YGCT FGC FGCT GCT0.00 53.49 91.96 39.58 94.22 93.19 25 0.599 3 0.673 1.273
6、示例參數:gccause
-gccause
參數用于垃圾收集統計概述(同-gcutil
),附加最近兩次垃圾回收事件的原因。
在操作系統終端輸入如下命令,即可查看相關信息,示例如下。
$ jstat -gccause 20094S0 S1 E O M CCS YGC YGCT FGC FGCT GCT LGCC GCC0.00 53.49 92.65 39.58 94.22 93.19 25 0.599 3 0.673 1.273 Allocation Failure No GC
各個參數解讀如下:
- LGCC:最近垃圾回收的原因
- GCC:當前垃圾回收的原因
7、示例參數:gcnew
-gcnew
參數用于統計新生代的行為。
在操作系統終端輸入如下命令,即可查看相關信息,示例如下。
$ jstat -gcnew 20094S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
18432.0 18944.0 0.0 10133.7 2 15 18432.0 281088.0 265231.7 25 0.599
各個參數解讀如下:
- TT:Tenuring threshold(提升閾值)
- MTT:最大的tenuring threshold
- DSS:survivor區域大小 (KB)
8、示例參數:gcnewcapacity
-gcnewcapacity
參數用于新生代與其相應的內存空間的統計。
在操作系統終端輸入如下命令,即可查看相關信息,示例如下。
$ jstat -gcnewcapacity 20094NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC43520.0 698880.0 355840.0 232960.0 18432.0 232960.0 18944.0 697856.0 281088.0 25 3
各個參數解讀如下:
- S0CMX:最大的S0空間 (KB)
- S0C:當前S0區的容量 (KB)
- ECMX:最大eden空間 (KB)
- EC:當前eden區的容量 (KB)
9、示例參數:gcold
-gcold
參數用于統計老年代的行為。
在操作系統終端輸入如下命令,即可查看相關信息,示例如下。
$ jstat -gcold 20094MC MU CCSC CCSU OC OU YGC FGC FGCT GCT70420.0 66352.5 9020.0 8405.8 139776.0 55324.5 25 3 0.673 1.273
10、示例參數:gcoldcapacity
-gcoldcapacity
參數用于統計老年代的大小和空間。
在操作系統終端輸入如下命令,即可查看相關信息,示例如下。
$ jstat -gcoldcapacity 20094OGCMN OGCMX OGC OC YGC FGC FGCT GCT87552.0 1398272.0 139776.0 139776.0 25 3 0.673 1.273
11、示例參數:gcmetacapacity
-gcmetacapacity
參數用于統計元空間的大小和空間。
在操作系統終端輸入如下命令,即可查看相關信息,示例如下。
$ jstat -gcmetacapacity 20094MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC FGCT GCT0.0 1112064.0 72468.0 0.0 1048576.0 9276.0 26 3 0.673 1.513
12、示例參數:printcompilation
-printcompilation
參數用于HotSpot
編譯方法統計。
在操作系統終端輸入如下命令,即可查看相關信息,示例如下。
$ jstat -printcompilation 20094
Compiled Size Type Method4387 123 1 org/apache/catalina/core/StandardContext getLoader
各個參數解讀如下:
- Compiled:被執行的編譯任務的數量
- Size:方法字節碼的字節數
- Type:編譯類型
- Method:編譯方法的類名和方法名。類名使用”/” 代替 “.” 作為空間分隔符. 方法名是給出類的方法名