文章目錄
- 一、簡介
- 二、常用命令
- 1、jstat -class pid : class loader行為統計
- 2、jstat -compiler pid : JIT編譯器行為統計
- 3、jstat -gc pid 5000 20 : 垃圾回收堆行為統計
- 4、jstat -gccapacity pid 5000 20 : 堆內存統計
- 5、jstat -gcutil pid 5000 20 : 總結垃圾回收統計
- 6、jstat -gccause pid 5000 20 : 垃圾收集統計概述
- 7、jstat -gcnew pid 5000 20 : 新生代垃圾回收統計
- 8、jstat -gcnewcapacity pid 5000 20 : 新生代內存統計
- 9、jstat -gcold pid 5000 20 : 老年代垃圾回收統計
- 10、jstat -gcoldcapacity pid 5000 20 : 老年代內存統計
- 11、jstat -gcmetacapacity pid 5000 20 : 元數據空間統計
- 12、jstat -printcompilation pid : 編譯方法統計
一、簡介
jstat(JVM statistics Monitoring)命令主要是 對java應用程序的資源和性能進行實時的命令行監控
,包括了對 heap size
和 垃圾回收狀況
的監控。
jstat
輸出結果:
root@yzh-zabbix-server:bin #jstat
invalid argument count
Usage: jstat -help|-optionsjstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]Definitions:<option> An option reported by the -options option<vmid> Virtual Machine Identifier. A vmid takes the following form:<lvmid>[@<hostname>[:<port>]]Where <lvmid> is the local vm identifier for the targetJava virtual machine, typically a process id; <hostname> isthe name of the host running the target Java virtual machine;and <port> is the port number for the rmiregistry on thetarget host. See the jvmstat documentation for a more completedescription of the Virtual Machine Identifier.<lines> Number of samples between header lines.<interval> Sampling interval. The following forms are allowed:<n>["ms"|"s"]Where <n> is an integer and the suffix specifies the units as milliseconds("ms") or seconds("s"). The default units are "ms".<count> Number of samples to take before terminating.-J<flag> Pass <flag> directly to the runtime system.
命令格式:
jstat [option] vmid [interval] [count]
參數說明:
參數 | 說明 |
---|---|
option | 操作參數,我們經常使用的選項有gc、gccapacity、gcnew、gcnewcapacity、gcold、gcoldcapacity、gcmetacapacity、gcutil等。 |
vmid | java進程ID |
interval | 間隔時間,單位為毫秒。 |
count | 打印次數。 |
option參數總覽:
參數 | 說明 |
---|---|
class | class loader的行為統計。 |
compiler | HotSpot JIT編譯器行為統計。 |
gc | 垃圾回收堆的行為統計。 |
gccapacity | 各個垃圾回收代容量(young、old、perm)和他們相應的空間統計。 |
gcutil | 垃圾回收統計概述。 |
gccause | 垃圾收集器概述。 |
gcnew | 新生代行為統計。 |
gcnewcapacity | 新生代與其相應的內存空間的統計。 |
gcold | 老年代和永久代行為統計。 |
gcoldcapacity | 老年代行為統計 |
gcmetacapacity | 元數據區行為統計。 |
printcompilation | HotSpot編譯方法統計。 |
二、常用命令
1、jstat -class pid : class loader行為統計
監視類裝載、卸載數量、總空間以及耗費的時間
jstat -class pid
輸出結果:
Loaded Bytes Unloaded Bytes Time4995 10540.4 0 0.0 5.22
字段說明:
字段 | 說明 |
---|---|
Loaded | 加載class的數量。 |
Bytes | class字節大小。 |
Unloaded | 未加載class的數量。 |
Bytes | 未加載class的字節大小。 |
Time | 加載時間。 |
2、jstat -compiler pid : JIT編譯器行為統計
輸出JIT編譯過的方法數量耗時等。
jstat -compiler pid
輸出結果:
Compiled Failed Invalid Time FailedType FailedMethod3641 1 0 16.62 1 com/cloudwise/agent/deps/asm/ClassReader accept
字段說明:
字段 | 說明 |
---|---|
Compiled | 編譯數量。 |
Failed | 編譯失敗數量。 |
Invalid | 無效數量。 |
Time | 編譯耗時。 |
FailedType | 失敗類型。 |
FailedMethod | 失敗方法的全限定名。 |
3、jstat -gc pid 5000 20 : 垃圾回收堆行為統計
5秒鐘打印一次,一共打印20次。
jstat -gc pid 5000 20
輸出結果:
root@yzh-zabbix-server:bin #jstat -gc 3111 5000 20S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
14336.0 24576.0 0.0 0.0 50688.0 50687.9 330752.0 330634.8 55296.0 53462.8 6400.0 5925.3 178 2.226 2483 438.892 441.117
14336.0 24576.0 0.0 0.0 50688.0 50688.0 330752.0 330607.2 55296.0 53467.9 6400.0 5925.3 178 2.226 2511 443.944 446.169
14336.0 24576.0 0.0 0.0 50688.0 50686.3 330752.0 330591.4 55296.0 53467.9 6400.0 5925.3 178 2.226 2541 449.050 451.275
14336.0 24576.0 0.0 0.0 50688.0 50687.9 330752.0 330603.5 55296.0 53467.9 6400.0 5925.3 178 2.226 2569 454.029 456.255
14336.0 24576.0 0.0 0.0 50688.0 50688.0 330752.0 330607.6 55296.0 53467.9 6400.0 5925.3 178 2.226 2598 458.971 461.197
C
即Capacity
總容量,U
即Used
已使用的容量。
字段說明:
字段 | 說明 |
---|---|
S0C | 年輕代第一個Survivor區的大小(字節) |
S1C | 年輕代第二個Survivor區的大小(字節) |
S0U | 年輕代第一個Survivor區的使用大小(字節) |
S1U | 年輕代第二個Survivor區的使用大小(字節) |
EC | 年輕代中Eden區的大小(字節) |
EU | 年輕代中Eden區的使用大小(字節) |
OC | 老年代大小(字節) |
OU | 老年代使用大小(字節) |
MC | 方法區大小(字節) |
MU | 方法區使用大小(字節) |
CCSC | 壓縮類空間大小(字節) |
CCSU | 壓縮類空間使用大小(字節) |
YGC | 年輕代垃圾回收次數 |
YGCT | 年輕代垃圾回收消耗時間 |
FGC | 老年代垃圾回收次數 |
FGCT | 老年代垃圾回收消耗時間 |
GCT | 垃圾回收消耗總時間 |
4、jstat -gccapacity pid 5000 20 : 堆內存統計
5秒鐘打印一次,一共打印20次。
同 -gc
,不過還會輸出 Java
堆各區域使用到的最大、最小空間。
jstat -gccapacity pid 5000 20
輸出結果:
root@yzh-zabbix-server:bin #jstat -gccapacity 3111 5000 20NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC 10752.0 164864.0 110080.0 14336.0 24576.0 50688.0 22016.0 330752.0 330752.0 330752.0 0.0 1097728.0 55296.0 0.0 1048576.0 6400.0 178 749110752.0 164864.0 110080.0 14336.0 24576.0 50688.0 22016.0 330752.0 330752.0 330752.0 0.0 1097728.0 55296.0 0.0 1048576.0 6400.0 178 752010752.0 164864.0 110080.0 14336.0 24576.0 50688.0 22016.0 330752.0 330752.0 330752.0 0.0 1097728.0 55296.0 0.0 1048576.0 6400.0 178 7547
字段說明:
字段 | 說明 |
---|---|
NGCMN | 新生代最小容量 |
NGCMX | 新生代最大容量 |
NGC | 當前新生代容量 |
S0C | 第一個Survivor區大小 |
S1C | 第二個Survivor區的大小 |
EC | Eden區的大小 |
OGCMN | 老年代最小容量 |
OGCMX | 老年代最大容量 |
OGC | 當前老年代大小 |
OC | 當前老年代大小 |
MCMN | 最小元數據容量 |
MCMX | 最大元數據容量 |
MC | 當前元數據空間大小 |
CCSMN | 最小壓縮類空間大小 |
CCSMX | 最大壓縮類空間大小 |
CCSC | 當前壓縮類空間大小 |
YGC | 年輕代gc次數 |
FGC | 老年代GC次數 |
5、jstat -gcutil pid 5000 20 : 總結垃圾回收統計
5秒鐘打印一次,一共打印20次。
同 -gc
,不過輸出的是已使用空間占總空間的百分比
jstat -gcutil pid 5000 20
輸出結果:
root@yzh-zabbix-server:bin #jstat -gcutil 3111 5000 20S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 0.00 0.00 100.00 99.95 96.75 92.57 178 2.226 10172 1772.566 1774.7910.00 0.00 100.00 99.95 96.75 92.57 178 2.226 10203 1777.589 1779.8140.00 0.00 100.00 99.95 96.75 92.57 178 2.226 10234 1782.580 1784.806
字段說明:
字段 | 說明 |
---|---|
S0 | 第一個Servivor區當前使用比例 |
S1 | 第二個Servivor區當前使用比例 |
E | Eden區使用比例 |
O | 老年代使用比例 |
M | 元數據區使用比例 |
CCS | 壓縮使用比例 |
YGC | 年輕代垃圾回收次數 |
FGC | 老年代垃圾回收次數 |
FGCT | 老年代垃圾回收消耗時間 |
GCT | 垃圾回收消耗總時間 |
6、jstat -gccause pid 5000 20 : 垃圾收集統計概述
5秒鐘打印一次,一共打印20次。
同 -gcutil
,附加最近兩次垃圾回收事件的原因。
jstat -gccause pid 5000 20
輸出結果:
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT LGCC GCC
0.00 0.00 35.78 19.43 97.96 95.19 20 0.176 11 0.406 0.582 Heap Inspection Initiated GC No GC
字段說明:
字段 | 說明 |
---|---|
S0 | 第一個Servivor區當前使用比例 |
S1 | 第二個Servivor區當前使用比例 |
E | Eden區使用比例 |
O | 老年代使用比例 |
M | 元數據區使用比例 |
CCS | 壓縮使用比例 |
YGC | 年輕代垃圾回收次數 |
FGC | 老年代垃圾回收次數 |
FGCT | 老年代垃圾回收消耗時間 |
GCT | 垃圾回收消耗總時間 |
LGCC | 最近垃圾回收的原因 |
GCC | 當前垃圾回收的原因 |
7、jstat -gcnew pid 5000 20 : 新生代垃圾回收統計
5秒鐘打印一次,一共打印20次。
jstat -gcnew pid 5000 20
輸出結果:
root@yzh-zabbix-server:bin #jstat -gcnew 3111 5000 20S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
14336.0 24576.0 0.0 0.0 12 15 24576.0 50688.0 50688.0 178 2.226
14336.0 24576.0 0.0 0.0 12 15 24576.0 50688.0 50688.0 178 2.226
14336.0 24576.0 0.0 0.0 12 15 24576.0 50688.0 50688.0 178 2.226
字段說明:
字段 | 說明 |
---|---|
S0C | 第一個Survivor區大小 |
S1C | 第二個Survivor區的大小 |
S0U | 第一個Survivor區的使用大小 |
S1U | 第二個Survivor區的使用大小 |
TT | 對象在新生代存活的次數 |
MTT | 對象在新生代存活的最大次數 |
DSS | 期望的Survivor區大小 |
EC | Eden區的大小 |
EU | Eden區的使用大小 |
YGC | 年輕代垃圾回收次數 |
YGCT | 年輕代垃圾回收消耗時間 |
8、jstat -gcnewcapacity pid 5000 20 : 新生代內存統計
5秒鐘打印一次,一共打印20次。
jstat -gcnewcapacity pid 5000 20
輸出結果:
root@yzh-zabbix-server:bin #jstat -gcnewcapacity 3111 5000 20NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC 10752.0 164864.0 110080.0 54784.0 14336.0 54784.0 24576.0 163840.0 50688.0 178 1482410752.0 164864.0 110080.0 54784.0 14336.0 54784.0 24576.0 163840.0 50688.0 178 1485010752.0 164864.0 110080.0 54784.0 14336.0 54784.0 24576.0 163840.0 50688.0 178 14878
字段說明:
字段 | 說明 |
---|---|
NGCMN | 新生代最小容量 |
NGCMX | 新生代最大容量 |
NGC | 當前新生代容量 |
S0CMX | 第一個Survivor區最大大小 |
S0C | 第一個Survivor區當前大小 |
S1CMX | 第二個Survivor區最大大小 |
S1C | 第二個Survivor區當前大小 |
ECMX | Eden區最大大小 |
EC | Eden區當前大小 |
YGC | 年輕代垃圾回收次數 |
FGC | 老年代回收次數 |
9、jstat -gcold pid 5000 20 : 老年代垃圾回收統計
5秒鐘打印一次,一共打印20次。
jstat -gcold pid 5000 20
輸出結果:
root@yzh-zabbix-server:bin #jstat -gcold 3111 5000 20MC MU CCSC CCSU OC OU YGC FGC FGCT GCT 55552.0 53550.5 6400.0 5924.5 330752.0 330602.1 178 16635 2895.316 2897.54155552.0 53550.5 6400.0 5924.5 330752.0 330601.3 178 16665 2900.278 2902.50455552.0 53550.5 6400.0 5924.5 330752.0 330604.3 178 16693 2905.210 2907.435
字段說明:
字段 | 說明 |
---|---|
MC | 方法區大小 |
MU | 方法區使用大小 |
CCSC | 壓縮類空間大小 |
CCSU | 壓縮類空間使用大小 |
OC | 老年代大小 |
OU | 老年代使用大小 |
YGC | 年輕代垃圾回收次數 |
FGC | 老年代垃圾回收次數 |
FGCT | 老年代垃圾回收消耗時間 |
GCT | 垃圾回收消耗總時間 |
10、jstat -gcoldcapacity pid 5000 20 : 老年代內存統計
5秒鐘打印一次,一共打印20次。
jstat -gcoldcapacity pid 5000 20
輸出結果:
root@yzh-zabbix-server:bin #jstat -gcoldcapacity 3111 5000 20OGCMN OGCMX OGC OC YGC FGC FGCT GCT 22016.0 330752.0 330752.0 330752.0 178 17810 3099.915 3102.14022016.0 330752.0 330752.0 330752.0 178 17840 3104.912 3107.13722016.0 330752.0 330752.0 330752.0 178 17870 3109.847 3112.073
字段說明:
字段 | 說明 |
---|---|
OGCMN | 老年代最小容量 |
OGCMX | 老年代最大容量 |
OGC | 當前老年代大小 |
OC | 老年代大小 |
YGC | 年輕代垃圾回收次數 |
FGC | 老年代垃圾回收次數 |
FGCT | 老年代垃圾回收消耗時間 |
GCT | 垃圾回收消耗總時間 |
11、jstat -gcmetacapacity pid 5000 20 : 元數據空間統計
5秒鐘打印一次,一共打印20次。
jstat -gcmetacapacity pid 5000 20
輸出結果:
root@yzh-zabbix-server:bin #jstat -gcmetacapacity 3111 5000 20MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC FGCT GCT 0.0 1097728.0 55552.0 0.0 1048576.0 6400.0 178 18795 3270.543 3272.7680.0 1097728.0 55552.0 0.0 1048576.0 6400.0 178 18824 3275.425 3277.6500.0 1097728.0 55552.0 0.0 1048576.0 6400.0 178 18853 3280.369 3282.595
字段說明:
字段 | 說明 |
---|---|
MCMN | 最小元數據容量 |
MCMX | 最大元數據容量 |
MC | 當前元數據空間大小 |
CCSMN | 最小壓縮類空間大小 |
CCSMX | 最大壓縮類空間大小 |
CCSC | 當前壓縮類空間大小 |
YGC | 年輕代垃圾回收次數 |
FGC | 老年代垃圾回收次數 |
FGCT | 老年代垃圾回收消耗時間 |
GCT | 垃圾回收消耗總時間 |
12、jstat -printcompilation pid : 編譯方法統計
jstat -printcompilation -pid
輸出結果:
Compiled Size Type Method3745 8 1 java/lang/Long toString
字段說明:
字段 | 說明 |
---|---|
Compiled | 被執行的編譯任務的數量 |
Size | 方法字節碼的字節數 |
Type | 編譯類型 |
Method | 編譯方法的類名和方法名。類名使用"/" 代替 “.” 作為空間分隔符. 方法名是給出類的方法名. 格式是一致于HotSpot - XX:+PrintComplation 選項 |