Jstat是JDK自帶的一個輕量級小工具,全稱"Java Vitual Machine statistics monitoring tool" 它位於java的bin目錄下,主要利用JVM內建的指令對Java應用程序的資源和性能進行實時的命令行的監控,包括了對Heap size和垃圾回收狀況的監控。可見,Jstat是輕量級的、專門針對JVM的工具,非常適用。
使用方法如下:
[root@01 ]# jstat -help
Usage: jstat -help|-options
jstat -<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 target
Java virtual machine, typically a process id; <hostname> is
the name of the host running the target Java virtual machine;
and <port> is the port number for the rmiregistry on the
target host. See the jvmstat documentation for a more complete
description 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.
常見options 及說明:
選項 | 說明 |
---|---|
class | 類加載器 |
compiler | JIT |
gc | gc堆狀態 |
gccapacity | 各區大小 |
gccause | 最近一次gc統計和原因 |
gcnewcapacity | 新區大小 |
gcold | 老區統計 |
gcoldcapacity | 老區大小 |
gcpermcapacity | 永久區大小 |
gcutil | GC統計彙總 |
printcompilation | HotSpot編譯統計 |
jstat -class <pid>
: 顯示加載class數量,及所佔空間等信息。
顯示列明 | 具體描述 |
---|---|
Loaded | 裝載的類的數量 |
Bytes | 裝載類所佔用的字節數 |
Unloaded | 卸載類的數量 |
Bytes | 卸載類的字節數 |
Time | 裝載和卸載類所花費的時間 |
示例:
[root@hqbs-group-01 ~]# jstat -class 10631
Loaded Bytes Unloaded Bytes Time
10499 17459.3 6211 9604.4 3.55
[root@hqbs-group-01 ~]#
2.jstat -compiler <pid>
:顯示VM實時編譯的數量等信息。
顯示列名 | 具體描述 |
---|---|
Compiled | 編譯任務執行數量 |
Failed | 編譯任務執行失敗數量 |
Invalid | 編譯任務執行失效數量 |
Time | 編譯任務消耗時間 |
FailedType | 最後一個編譯失敗任務的類型 |
FailedMethod | 最後一個編譯失敗任務所在的類及方法 |
示例:
[root@01 ~]# jstat -compiler 10631
Warning: Unresolved Symbol: sun.ci.totalCompiles substituted NaN
Warning: Unresolved Symbol: sun.ci.totalBailouts substituted NaN
Warning: Unresolved Symbol: sun.ci.totalInvalidates substituted NaN
Warning: Unresolved Symbol: java.ci.totalTime substituted NaN
Warning: Unresolved Symbol: sun.ci.lastFailedType substituted NaN
Warning: Unresolved Symbol: sun.ci.lastFailedMethod substituted NaN
Compiled Failed Invalid Time FailedType FailedMethod
- - - - - -
[root@01 ~]#
3.jstat -gc <pid>
:可以顯示gc的信息,查看gc的次數,及時間。
顯示列名 | 具體描述 |
---|---|
S0C | 年輕代中第一個survivor(倖存區)的容量 (字節) |
S1C | 年輕代中第二個survivor(倖存區)的容量 (字節) |
S0U | 年輕代中第一個survivor(倖存區)目前已使用空間 (字節) |
S1U | 年輕代中第二個survivor(倖存區)目前已使用空間 (字節) |
EC | 年輕代中Eden(伊甸園)的容量 (字節) |
EU | 年輕代中Eden(伊甸園)目前已使用空間 (字節) |
OC | Old代的容量 (字節) |
OU | Old代目前已使用空間 (字節) |
MC | 方法區大小(字節) |
MU | 方法區使用大小(字節) |
CCSC | 壓縮類空間大小 |
CCSU | 壓縮類空間使用大小 |
YGC | 從應用程序啓動到採樣時年輕代垃圾回收次數 |
YGCT | 從應用程序啓動到採樣時年輕代垃圾回收消耗時間 |
FGC | 從應用程序啓動到採樣時老年代垃圾回收次數 |
FGCT | 從應用程序啓動到採樣時老年代垃圾回收消耗時間 |
GCT | 從應用程序啓動到採樣時垃圾回收消耗總時間 |
示例:
[root@-01 ~]# jstat -gc 10631
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
1216.0 1216.0 0.0 146.3 10240.0 5659.0 12600.0 8229.3 29044.0 20782.3 6656.0 2791.1 96117 155.466 5 0.125 155.591
[root@-01 ~]# jstat -gc 10631 2 10
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
1216.0 1216.0 148.2 0.0 10240.0 5376.9 12600.0 8229.3 29044.0 20782.3 6656.0 2791.1 96120 155.470 5 0.125 155.595
1216.0 1216.0 148.2 0.0 10240.0 5376.9 12600.0 8229.3 29044.0 20782.3 6656.0 2791.1 96120 155.470 5 0.125 155.595
1216.0 1216.0 148.2 0.0 10240.0 5376.9 12600.0 8229.3 29044.0 20782.3 6656.0 2791.1 96120 155.470 5 0.125 155.595
1216.0 1216.0 148.2 0.0 10240.0 5376.9 12600.0 8229.3 29044.0 20782.3 6656.0 2791.1 96120 155.470 5 0.125 155.595
1216.0 1216.0 148.2 0.0 10240.0 5376.9 12600.0 8229.3 29044.0 20782.3 6656.0 2791.1 96120 155.470 5 0.125 155.595
1216.0 1216.0 148.2 0.0 10240.0 5377.2 12600.0 8229.3 29044.0 20782.3 6656.0 2791.1 96120 155.470 5 0.125 155.595
1216.0 1216.0 148.2 0.0 10240.0 5377.2 12600.0 8229.3 29044.0 20782.3 6656.0 2791.1 96120 155.470 5 0.125 155.595
1216.0 1216.0 148.2 0.0 10240.0 5377.2 12600.0 8229.3 29044.0 20782.3 6656.0 2791.1 96120 155.470 5 0.125 155.595
1216.0 1216.0 148.2 0.0 10240.0 5377.2 12600.0 8229.3 29044.0 20782.3 6656.0 2791.1 96120 155.470 5 0.125 155.595
1216.0 1216.0 148.2 0.0 10240.0 5377.2 12600.0 8229.3 29044.0 20782.3 6656.0 2791.1 96120 155.470 5 0.125 155.595
[root@-01 ~]#
4.jstat -gccapacity <pid>
: 可以顯示,VM內存中三代(young,old,perm)對象的使用和佔用大小
顯示列名 | 具體描述 |
---|---|
NGCMN | 新生代最小容量 |
NGCMX | 新生代最大容量 |
NGC | 當前新生代容量 |
S0C | 第一個倖存區大小 |
S1C | 第二個倖存區的大小 |
EC | 伊甸園區的大小 |
OGCMN | 老年代最小容量 |
OGCMX | 老年代最大容量 |
OGC | old代當前新生成的容量 (字節) |
OC | 當前老年代大小 |
MCMN | 最小元數據容量 |
MCMX | 最大元數據容量 |
MC | 當前元數據空間大小 |
CCSMN | 最小壓縮類空間大小 |
CCSMX | 最大壓縮類空間大小 |
CCSC | 當前壓縮類空間大小 |
YGC | 年輕代gc次數 |
FGC | 老年代GC次數 |
示例:
[root@01 ~]# jstat -gccapacity 10631
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC
8192.0 16384.0 12672.0 1216.0 1216.0 10240.0 8192.0 16384.0 12600.0 12600.0 0.0 1071104.0 29044.0 0.0 1048576.0 6656.0 96122 5
[root@01 ~]#
- jstat -gcutil :`統計gc信息。
顯示列名 | 具體描述 |
---|---|
S0 | 倖存1區當前使用比例 |
S1 | 倖存2區當前使用比例 |
E | 伊甸園區使用比例 |
O | 老年代使用比例 |
M | 元數據區使用比例 |
CCS | 壓縮使用比例 |
YGC | 年輕代垃圾回收次數 |
YGCT | 從應用程序啓動到採樣時年輕代中gc所用時間(s) |
FGC | 老年代垃圾回收次數 |
FGCT | 老年代垃圾回收消耗時間 |
GCT | 垃圾回收消耗總時間 |
示例:
[root@01 ~]# jstat -gcutil 10631
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 23.53 94.33 65.33 71.55 41.93 96129 155.484 5 0.125 155.609
6、jstat -gcnew <pid>
:年輕代對象的信息。
顯示列名 | 具體描述 |
---|---|
S0C | 第一個倖存區的大小(字節) |
S1C | 第二個倖存區的大小 |
S0U | 第一個倖存區的使用大小 |
S1U | 第二個倖存區的使用大小 |
TT | 對象在新生代存活的次數 |
MTT | 對象在新生代存活的最大次數 |
DSS | 期望的倖存區大小 |
EC | 伊甸園區的大小 |
EU | 伊甸園區的使用大小 |
YGC | 年輕代垃圾回收次數 |
YGCT | 年輕代垃圾回收消耗時間 |
示例:
[root@01 ~]# jstat -gcnew 32011
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
1024.0 1024.0 256.0 0.0 1 15 1024.0 1472512.0 1097625.6 12494 115.353
[root@01 ~]# jstat -gcnew 10631
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
1216.0 1216.0 156.9 0.0 15 15 608.0 10240.0 5212.0 96138 155.498
[root@01 ~]#
7、jstat -gcnewcapacity<pid>
: 年輕代對象的信息及其佔用量。
顯示列名 | 具體描述 |
---|---|
NGCMN | 新生代最小容量 |
NGCMX | 新生代最大容量 |
NGC | 當前新生代容量 |
S0CMX | 最大幸存1區大小 |
S0C | 當前倖存1區大小 |
S1CMX | 最大幸存2區大小 |
S1C | 當前倖存2區大小 |
ECMX | 最大伊甸園區大小 |
EC | 當前伊甸園區大小 |
YGC | 年輕代垃圾回收次數 |
FGC | 老年代回收次數 |
示例:
[root@01 ~]# jstat -gcnewcapacity 10631
NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC
8192.0 16384.0 12672.0 1600.0 1216.0 1600.0 1216.0 13184.0 10240.0 96140 5
[root@01 ~]# jstat -gcnewcapacity 32011
NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC
1474560.0 1474560.0 1474560.0 491520.0 1024.0 491520.0 1024.0 1473536.0 1472512.0 12495 0
[root@01 ~]#
8、jstat -gcold <pid>
:old代對象的信息。
顯示列名 | 具體描述 |
---|---|
MC | 方法區大小 |
MU | 方法區使用大小 |
CSCC | 壓縮類空間大小 |
CSCU | 壓縮類空間使用大小 |
OC | 老年代大小 |
OU | 老年代使用大小 |
YGC | 年輕代垃圾回收次數 |
FGC | 老年代垃圾回收次數 |
FGCT | 老年代垃圾回收消耗時間 |
GCT | 垃圾回收消耗總時間 |
示例:
[root@01 ~]# jstat -gcold 10631
MC MU CCSC CCSU OC OU YGC FGC FGCT GCT
29044.0 20782.3 6656.0 2791.1 12600.0 8231.4 96142 5 0.125 155.630
[root@01 ~]# jstat -gcold 32011
MC MU CCSC CCSU OC OU YGC FGC FGCT GCT
104832.0 100731.4 11648.0 10935.6 1671168.0 1147747.1 12496 0 0.000 115.374
[root@01 ~]#
9、jstat -gcoldcapacity <pid>
: old代對象的信息及其佔用量。
示例:
[root@01 ~]# jstat -gcoldcapacity 32011
OGCMN OGCMX OGC OC YGC FGC FGCT GCT
1671168.0 1671168.0 1671168.0 1671168.0 12496 0 0.000 115.374
[root@01 ~]# jstat -gcoldcapacity 10631
OGCMN OGCMX OGC OC YGC FGC FGCT GCT
8192.0 16384.0 12600.0 12600.0 96145 5 0.125 155.634
[root@01 ~]#
顯示列名 | 具體描述 |
---|---|
OGCMN | 老年代最小容量 |
OGCMX | 老年代最大容量 |
OGC | 當前老年代大小 |
OC | 老年代大小 |
YGC | 年輕代垃圾回收次數 |
FGC | 老年代垃圾回收次數 |
FGCT | 老年代垃圾回收消耗時間 |
GCT | 垃圾回收消耗總時間 |
參考鏈接:
https://blog.csdn.net/zhaozheng7758/article/details/8623549
https://blog.csdn.net/maosijunzi/article/details/46049117