你了解 Java 的 jstat 命令嗎?
點擊上方藍色“程序猿DD”,選擇“設為星標”
回復“資源”獲取獨家整理的學習資料!

作用
jstat 工具用于檢測到的 Java 虛擬機 (JVM) 的性能統(tǒng)計信息,比如GC、內存大小、編譯時間等。
命令格式
jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]
generalOption:
jstat?-help|-options
執(zhí)行 jstat -options命令后各個選項,見下面
| 選項 | 描述 |
|---|---|
| -class | 類加載行為的統(tǒng)計信息 |
| -compiler | 即時編譯熱點行為的統(tǒng)計 |
| -gc | 堆行為的統(tǒng)計 |
| -gcutil | 和GC一樣,但輸出主要關注已使用空間占總空間的百分比 |
| -gccapacity | Java堆各個區(qū)域使用到的最大和最小空間 |
| -gccause | 垃圾回收統(tǒng)計信息 (和 gcutil 相同) , 最后和當前 垃圾回收事件 |
| -gcmetacapacity | 輸出永久代使用到的最大和最小空間 |
| -gcnew | 新生代的統(tǒng)計 |
| -gcnewcapacity | 同上,順帶輸出主要關注使用到的最大和最小空間 |
| -gcold | 年老代和永生代行為統(tǒng)計 |
| -gcoldcapacity | 年老代行為統(tǒng)計 |
| -printcompilation | 輸出已經被JIT編譯的方法 |
outputOptions:
一個或多個輸出選項, 包括單個 stat選項, 加上任何-t、h 和 J 選項
vmid:
虛擬機標識符 進程id
ps?-ef?|?grep?java
或者
jps?-l
interval:
采樣間隔在指定的單位,秒(s)或毫秒(ms)。默認單位是毫秒。必須是正整數(shù)。如果指定,JSTAT將在每個間隔產生其輸出
count:
顯示的次數(shù)。默認值是無窮大;也就是說,JSTAT顯示統(tǒng)計數(shù)據(jù),直到目標JVM終止或JSTAT命令終止。必須是正整數(shù)
例子
-class選項
輸入
jstat?-class?29271?1000?20
輸出
Loaded??Bytes??Unloaded??Bytes?????Time
?22182?42401.0??????638???847.4??????39.52
?22182?42401.0??????638???847.4??????39.52
| 列 | 描述 |
|---|---|
| loaded | 已經裝載的數(shù)據(jù)量 |
| bytes | 裝載的字節(jié)數(shù) |
| unloaded | 卸載類的數(shù)量 |
| bytes | 卸載類的字節(jié)數(shù) |
| time | 裝載和卸載所花費的時間 |
-compiler選項
輸入
jstat?-compiler?29271?1000?20
輸出
Compiled?Failed?Invalid???Time???FailedType?FailedMethod
????6663??????3???????0???108.64??????????1?org/apache/jasper/xmlparser/ParserUtils?convert
????6663??????3???????0???108.64??????????1?org/apache/jasper/xmlparser/ParserUtils?convert
| 列 | 描述 |
|---|---|
| Compiled | 編譯任務執(zhí)行數(shù)量 |
| Failed | 編譯任務執(zhí)行失敗的數(shù)量 |
| Invalid | 失效的數(shù)量 |
| Time | 花費的時間 |
| FailedType | 失敗任務的類型 |
| FailedMethod | 失敗任務的方法 |
-gc選項
輸入
jstat?-gc?29271?1000?20
輸出
?S0C????S1C????S0U????S1U??????EC???????EU????????OC?????????OU???????PC?????PU????YGC?????YGCT????FGC????FGCT?????GCT
4096.0?4096.0??0.0???3088.4?691200.0?85378.5??1398272.0???337712.4??262144.0?121554.1??25374??413.439???7??????5.536??418.975
4096.0?4096.0??0.0???3088.4?691200.0?85727.0??1398272.0???337712.4??262144.0?121554.1??25374??413.439???7??????5.536??418.975
| 列 | 描述 |
|---|---|
| S0C | 第一個survivor的容量 |
| S1C | 第二個survivor的容量 |
| S0U | 第一個survivor的使用情況 |
| S1U | 第二個survivor的使用情況 |
| EC | Eden區(qū)的總容量 |
| EU | Eden區(qū)已使用的容量 |
| OC | Old區(qū)的總容量 |
| OU | Old區(qū)已使用的容量 |
| PC | 當前perm的容量 (KB) |
| PU | perm的使用 (KB) |
| YGC | 新生代垃圾回收次數(shù) |
| YGCT | 新生代垃圾回收時間 |
| FGC | 老年代垃圾回收次數(shù) |
| FGCT | 老年代垃圾回收時間 |
| GCT | 垃圾回收總消耗時間 |
-gcutil選項
輸入
jstat?-gcutil?29271?1000?20
輸出
?S0?????S1?????E??????O??????P?????YGC?????YGCT????FGC????FGCT?????GCT
?83.70???0.00??62.04??24.11??46.37??25373??413.423?????7????5.536??418.958
?83.70???0.00??62.06??24.11??46.37??25373??413.423?????7????5.536??418.958
| 列 | 描述 |
|---|---|
| S0 | 第一個survivor的容量 |
| S1 | 第二個survivor的容量 |
| E | Eden區(qū)的總容量 |
| O | Old區(qū)的總容量 |
| P | 當前perm的容量 (KB) |
| YGC | 新生代垃圾回收次數(shù) |
| YGCT | 新生代垃圾回收時間 |
| FGC | 老年代垃圾回收次數(shù) |
| FGCT | 老年代垃圾回收時間 |
| GCT | 垃圾回收總消耗時間 |
-gccapacity選項
輸入
jstat?-gccapacity?29271?1000?20
輸出
NGCMN????NGCMX?????NGC?????S0C???S1C???????EC??????OGCMN??????OGCMX???????OGC?????????OC??????PGCMN????PGCMX?????PGC???????PC?????YGC????FGC
699392.0?699392.0?699392.0?4096.0?4096.0?691200.0??1398272.0??1398272.0??1398272.0??1398272.0?262144.0?262144.0?262144.0?262144.0??25374?????7
699392.0?699392.0?699392.0?4096.0?4096.0?691200.0??1398272.0??1398272.0??1398272.0??1398272.0?262144.0?262144.0?262144.0?262144.0??25374?????7
| 列 | 描述 |
|---|---|
| NGCMN | 年輕代初始容量(kb) |
| NGCMX | 年輕代最大容量(kb) |
| NGC | 年輕代當前容量 |
| S0C | 幸存區(qū)1當前容量 (KB) |
| S1C | 幸存區(qū)2容量 (KB) |
| EC | 伊甸區(qū)容量 |
| OGCMN | 老年代初始容量(kb) |
| OGCMX | 老年代最大容量(kb) |
| OGC | 當前老年代容量 |
| OC | Old代的容量 |
| PGCMN | perm代中初始化(最小)的大小 |
| PGCMX | perm代的最大容量 |
| PGC | perm代的當前容量 |
| PC | 持久代容量 |
| YGC | yfc次數(shù) |
| FGC | fgc次數(shù) |
-gccause選項
輸入
jstat?-gccause?29271?1000?20
輸出
??S0?????S1?????E??????O??????P?????YGC?????YGCT????FGC????FGCT?????GCT????LGCC?????????????????GCC
??0.00??75.40??72.95??24.15??46.37??25374??413.439?????7????5.536??418.975?Allocation?Failure???No?GC
??0.00??75.40??73.03??24.15??46.37??25374??413.439?????7????5.536??418.975?Allocation?Failure???No?GC
| 列 | 描述 |
|---|---|
| S0 | 第一個survivor的容量 |
| S1 | 第二個survivor的容量 |
| E | Eden區(qū)的總容量 |
| O | Old區(qū)的總容量 |
| P | 當前perm的容量 (KB) |
| YGC | 新生代垃圾回收次數(shù) |
| YGCT | 新生代垃圾回收時間 |
| FGC | 老年代垃圾回收次數(shù) |
| FGCT | 老年代垃圾回收時間 |
| GCT | 垃圾回收總消耗時間 |
| LGCC | 最近垃圾回收的原因 |
| GCC | 當前垃圾回收的原因 |
-gcnew選項
輸入
jstat?-gcnew?29271?1000?20
輸出
?S0C????S1C????S0U????S1U???TT?MTT??DSS??????EC???????EU?????YGC?????YGCT
4096.0?4096.0????0.0?3088.4??1??15?4096.0?691200.0?588124.7??25374??413.439
4096.0?4096.0????0.0?3088.4??1??15?4096.0?691200.0?588759.6??25374??413.439
| 列 | 描述 |
|---|---|
| S0C | 第一個survivor的容量 |
| S1C | 第二個survivor的容量 |
| S0U | 第一個survivor的使用情況 |
| S1U | 第二個survivor的使用情況 |
| TT | 最大持有次數(shù)限制 |
| MTT | 第二個survivor的使用情況 |
| DSS | 期望的幸存者大小 |
| EC | Eden區(qū)的總容量 |
| EU | Eden區(qū)已使用的容量 |
| YGC | 新生代垃圾回收次數(shù) |
| YGCT | 新生代垃圾回收時間 |
-gcnewcapacity選項
輸入
jstat?-gcnewcapacity?29271?1000?20
輸出
??NGCMN??????NGCMX???????NGC??????S0CMX?????S0C?????S1CMX?????S1C???????ECMX????????EC??????YGC???FGC
??699392.0???699392.0???699392.0?232960.0???4096.0?232960.0???4096.0???698368.0???691200.0?25374?????7
??699392.0???699392.0???699392.0?232960.0???4096.0?232960.0???4096.0???698368.0???691200.0?25374?????7
| 列 | 描述 |
|---|---|
| NGCMN | 年輕代初始容量(kb) |
| NGCMX | 年輕代最大容量(kb) |
| NGC | 年輕代當前容量 |
| S0CMX | 幸存區(qū)1最大容量 (KB) |
| S0C | 幸存區(qū)1當前容量 (KB) |
| S1CMX | 幸存區(qū)1最大容量 (KB) |
| S1C | 幸存區(qū)2容量 (KB) |
| ECMX | 伊甸區(qū)最大容量 |
| EC | 伊甸區(qū)容量 |
| YGC | yfc次數(shù) |
| FGC | fgc次數(shù) |
-gcold選項
輸入
jstat?-gcold?29271?1000?20
輸出
???PC???????PU????????OC??????????OU???????YGC????FGC????FGCT?????GCT
262144.0?121554.1???1398272.0????337896.5??25375?????7????5.536??418.995
262144.0?121554.1???1398272.0????337896.5??25375?????7????5.536??418.995
| 列 | 描述 |
|---|---|
| PC | 持久化容量 |
| PU | 持久化使用容量 |
| OC | 老年區(qū)容量 |
| OU | 老年區(qū)使用容量 |
| YGC | 新生代垃圾回收次數(shù) |
| YGCT | 新生代垃圾回收時間 |
| FGC | 老年代垃圾回收次數(shù) |
| FGCT | 老年代垃圾回收時間 |
-gcoldcapacity選項
輸入
jstat?-gcoldcapacity?29271?1000?20
輸出
???OGCMN???????OGCMX????????OGC?????????OC???????YGC???FGC????FGCT?????GCT
??1398272.0???1398272.0???1398272.0???1398272.0?25373?????7????5.536??418.958
??1398272.0???1398272.0???1398272.0???1398272.0?25373?????7????5.536??418.958
| 列 | 描述 |
|---|---|
| OGCMN | 老年代中初始化容量 |
| OGCMX | 老年代中最大容量 |
| OGC | 老年區(qū)當前容量 |
| OC | Old代的容量 |
| YGC | ygc次數(shù) |
| FGC | fgc次數(shù) |
| FGCT | fgc花費時間 |
| GCT | gc的總時間 |
-printcompilation選項
輸入
jstat?-printcompilation?29271?1000?20
輸出
Compiled??Size??Type?Method
????6663???3093????1?com/alibaba/dubbo/registry/support/FailbackRegistry?retry
????6663???3093????1?com/alibaba/dubbo/registry/support/FailbackRegistry?retry
| 列 | 描述 |
|---|---|
| Compiled | 編譯任務的數(shù)目 |
| Size | 方法生成字節(jié)碼大小 |
| Type | 編譯類型 |
| Method | 編譯方法 |
參考文檔
https://docs.oracle.com/javase/7/docs/technotes/tools/share/jstat.html#general_options
往期推薦
掃一掃,關注我
一起學習,一起進步
每周贈書,福利不斷
﹀
﹀
﹀
深度內容
推薦加入
評論
圖片
表情




