jstat功能
查看虛擬機統計信息,主要分爲三類:類加載、垃圾收集、即時編譯。
用法
- 命令格式
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
- 參數介紹
參數名 | 介紹 |
---|---|
option | 指定統計哪方面的JVM信息,可以通過jstat -options查看可選項 |
-t | 在輸出信息第一列顯示虛擬機啓動時間 |
-h | 每隔多少行重新顯示列標題(列名),防止顯示行數太多後列標題就看不到了;-h5 每5行重新顯示標題 |
vmid | 虛擬機標識符,格式[protocol:][//]lvmid[@hostname[:port]/servername] ;如果監控本地虛擬機只提供lvmid(local vertual mechine identifier)即可 |
interval | 統計信息採樣間隔,單位可以爲s 、ms ,默認單位ms ;1秒採樣間隔可以表示爲1s 、100ms 、1000 |
count | 採樣次數,默認爲正無窮大,直到命令終止或虛擬機終止纔會退出 |
-
統計選項
# 使用jstat -options查看option可選值
[root@localhost ~]# jstat -options
-class
-compiler
-gc
-gccapacity
-gccause
-gcmetacapacity
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcutil
-printcompilation
以上選項可以分爲三類:
分類 | 命令 | 解釋 |
---|---|---|
類加載 | -class | 顯示類加載器行爲統計信息 |
即時編譯 | -compiler | 顯示解釋編譯統計信息,包括編譯任務數、耗時、編譯異常等 |
即時編譯 | -printcompilation | 顯示最新即時編譯信息,包括類型、方法、大小等 |
垃圾回收 | -gc | 顯示堆垃圾回收行爲信息 |
垃圾回收 | -gcnew | 年輕代垃圾回收行爲,較-gc增加TT、MTT、DSS三列 |
垃圾回收 | -gcold | 老年代垃圾回收行爲,被-gc完全覆蓋 |
垃圾回收 | -gccapacity | 顯示各區域容量信息 |
垃圾回收 | -gcnewcapacity | 年輕代容量信息,較-gccapacity增加S0CMX、S1CMX、ECMX三列 |
垃圾回收 | -gcoldcapacity | 老年代容量信息,被-gccapacity完全覆蓋 |
垃圾回收 | -gcmetacapacity | 元空間容量信息,被-gccapacity完全覆蓋 |
垃圾回收 | -gcutil | 以百分比 形式展現垃圾收集彙總信息 |
垃圾回收 | -gccause | -gcutil輸出信息+上一次垃圾收集原因 |
實戰
環境準備
啓動一個tomcat服務器,用作被監控的Java進程。如果已有監控對象,可跳過此步驟。
# 查看當前路徑
[root@localhost ~]# pwd
/root
# 下載一個tomcat
[root@localhost ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.50/bin/apache-tomcat-8.5.50.tar.gz
--2020-01-30 16:04:28-- https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.50/bin/apache-tomcat-8.5.50.tar.gz
正在解析主機 mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.8.193, 2402:f000:1:408:8100::1
正在連接 mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.8.193|:443... 已連接。
已發出 HTTP 請求,正在等待迴應... 200 OK
長度:10305939 (9.8M) [application/octet-stream]
正在保存至: “apache-tomcat-8.5.50.tar.gz”
100%[=========================================================>] 10,305,939 5.03MB/s 用時 2.0s
2020-01-30 16:04:30 (5.03 MB/s) - 已保存 “apache-tomcat-8.5.50.tar.gz” [10305939/10305939])
# 解壓tomcat
[root@localhost ~]# tar -xf apache-tomcat-8.5.50.tar.gz
# 啓動tomcat
[root@localhost ~]# ./apache-tomcat-8.5.50/bin/startup.sh
Using CATALINA_BASE: /root/apache-tomcat-8.5.50
Using CATALINA_HOME: /root/apache-tomcat-8.5.50
Using CATALINA_TMPDIR: /root/apache-tomcat-8.5.50/temp
Using JRE_HOME: /usr
Using CLASSPATH: /root/apache-tomcat-8.5.50/bin/bootstrap.jar:/root/apache-tomcat-8.5.50/bin/tomcat-juli.jar
Tomcat started.
# 通過jps命令查看是否啓動成功,如下所示tomcat的lvmid爲7654
[root@localhost ~]# jps -l
7810 sun.tools.jps.Jps
7654 org.apache.catalina.startup.Bootstrap
類加載-class
# 只顯示一次類加載信息
[root@localhost ~]# jstat -class 7654
Loaded Bytes Unloaded Bytes Time
2410 4990.6 0 0.0 1.02
# 顯示5次類加載信息,每秒1條
[root@localhost ~]# jstat -class 7654 1s 5
Loaded Bytes Unloaded Bytes Time
2410 4990.6 0 0.0 1.02
2410 4990.6 0 0.0 1.02
2410 4990.6 0 0.0 1.02
2410 4990.6 0 0.0 1.02
2410 4990.6 0 0.0 1.02
# 以2s/條顯示5條統計信息,並顯示虛擬機啓動距今時間
[root@localhost ~]# jstat -class -t 7654 2s 5
Timestamp Loaded Bytes Unloaded Bytes Time
796.5 2410 4990.6 0 0.0 1.02
798.6 2410 4990.6 0 0.0 1.02
800.6 2410 4990.6 0 0.0 1.02
802.6 2410 4990.6 0 0.0 1.02
804.6 2410 4990.6 0 0.0 1.02
# 以500ms/條速度顯示10條,每隔5條顯示一次表頭
[root@localhost ~]# jstat -class -h5 7654 500 10
Loaded Bytes Unloaded Bytes Time
2410 4990.6 0 0.0 1.02
2410 4990.6 0 0.0 1.02
2410 4990.6 0 0.0 1.02
2410 4990.6 0 0.0 1.02
2410 4990.6 0 0.0 1.02
Loaded Bytes Unloaded Bytes Time
2410 4990.6 0 0.0 1.02
2410 4990.6 0 0.0 1.02
2410 4990.6 0 0.0 1.02
2410 4990.6 0 0.0 1.02
2410 4990.6 0 0.0 1.02
- 顯示字段說明
PerfCounter key:jcmd 7654 PerfCounter.print |grep java.cls.loadedClasses
字段 說明 PerfCounter key Timestamp 虛擬機啓動距離現在時間,本例中 804.6
說明虛擬機已啓動804.6秒Loaded 已加載的類數量,本例中2410,表示已加載2410個類 java.cls.loadedClasses Bytes 已加載類的大小(KB),本例中爲4990.6KB sun.cls.loadedBytes Unloaded 已卸載類數量,本例中有0個已卸載的類 java.cls.unloadedClasses Bytes 已卸載類大小(KB),本例爲0KB sun.cls.unloadedBytes Time 加載和卸載類所花費的時間 sun.cls.time
即時編譯-compiler
# 顯示一次即時編譯信息
[root@localhost ~]# jstat -compiler 7654
Compiled Failed Invalid Time FailedType FailedMethod
1914 1 0 3.19 1 org/apache/tomcat/util/IntrospectionUtils setProperty
# 以1s/條速率顯示3次即時編譯信息
[root@localhost ~]# jstat -compiler 7654 1s 3
Compiled Failed Invalid Time FailedType FailedMethod
1917 1 0 3.20 1 org/apache/tomcat/util/IntrospectionUtils setProperty
1917 1 0 3.20 1 org/apache/tomcat/util/IntrospectionUtils setProperty
1917 1 0 3.20 1 org/apache/tomcat/util/IntrospectionUtils setProperty
-
顯示字段說明
PerfCounter key:jcmd 7654 PerfCounter.print |grep sun.ci.totalCompiles
字段 說明 PerfCounter key Compiled 已執行的即時編譯任務數,本例中執行了1917次即時編譯任務 sun.ci.totalCompiles Failed 即時編譯任務失敗數,本例中有一個即時編譯任務 sun.ci.totalBailouts Invalid 無效的即時編譯任務數,本例中無時效編譯任務 sun.ci.totalInvalidates Time 即時編譯任務花費的時間,本例中即時編譯花費3.2秒 java.ci.totalTime FailedType 上次編譯失敗的編譯類型,本例中爲1,也就是普通編譯 sun.ci.lastFailedType FailedMethod 上次編譯失敗的類名.方法名,本例中爲org/apache/tomcat/util/IntrospectionUtils類的setProperty方法 sun.ci.lastFailedMethod 編譯類型:0:no_compile:沒在編譯
1:normal_compile:普通編譯(從方法正常入口開始編譯)
2:osr_compile:On-Stack Rreplacement編譯(從方法中某個循環的回邊開始編譯)
3:native_compile:native wrapper的編譯
即時編譯-printcompilation
# 輸出最新的編譯信息
[root@localhost ~]# jstat -printcompilation 7654
Compiled Size Type Method
1980 346 1 java/util/regex/Pattern RemoveQEQuoting
# 每兩秒輸出一次最新的編譯信息
[root@localhost ~]# jstat -printcompilation -t 7654 2s 1000
Timestamp Compiled Size Type Method
6431.6 1995 228 1 java/text/SimpleDateFormat encode
6433.6 1995 228 1 java/text/SimpleDateFormat encode
.....
- 顯示字段說明
PerfCounter key:jcmd 7654 PerfCounter.print |grep sun.ci.totalCompiles
字段 說明 PerfCounter key Compiled 截止上次編譯已執行的編譯任務數(與-compiler中一致),本例中執行了1995次即時編譯任務 sun.ci.totalCompiles Size 上次編譯方法的字節碼大小,本例爲228b sun.ci.lastSize Type 上次時編譯類型,本例爲普通編譯 sun.ci.lastType Method 刪詞即時編譯方法,本例爲java/text/SimpleDateFormat類的encode方法 sun.ci.lastMethod
垃圾收集-gc
# 以1秒/次速度顯示1000次gc信息,每顯示10次後重新顯示標題
[root@localhost ~]# jstat -gc -h10 7654 1s 1000
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
4608.0 1024.0 0.0 1008.0 32768.0 29610.6 20480.0 11614.8 16384.0 15835.8 1792.0 1605.2 5 0.056 0 0.000 0.056
4608.0 1024.0 0.0 1008.0 32768.0 29610.6 20480.0 11614.8 16384.0 15835.8 1792.0 1605.2 5 0.056 0 0.000 0.056
4608.0 1024.0 0.0 1008.0 32768.0 29610.6 20480.0 11614.8 16384.0 15835.8 1792.0 1605.2 5 0.056 0 0.000 0.056
4608.0 1024.0 0.0 1008.0 32768.0 29610.6 20480.0 11614.8 16384.0 15835.8 1792.0 1605.2 5 0.056 0 0.000 0.056
4608.0 1024.0 0.0 1008.0 32768.0 29610.6 20480.0 11614.8 16384.0 15835.8 1792.0 1605.2 5 0.056 0 0.000 0.056
4608.0 1024.0 0.0 1008.0 32768.0 29610.6 20480.0 11614.8 16384.0 15835.8 1792.0 1605.2 5 0.056 0 0.000 0.056
4608.0 1024.0 0.0 1008.0 32768.0 29610.6 20480.0 11614.8 16384.0 15835.8 1792.0 1605.2 5 0.056 0 0.000 0.056
4608.0 1024.0 0.0 1008.0 32768.0 29610.6 20480.0 11614.8 16384.0 15835.8 1792.0 1605.2 5 0.056 0 0.000 0.056
4608.0 1024.0 0.0 1008.0 32768.0 29610.6 20480.0 11614.8 16384.0 15835.8 1792.0 1605.2 5 0.056 0 0.000 0.056
4608.0 1024.0 0.0 1008.0 32768.0 29610.6 20480.0 11614.8 16384.0 15835.8 1792.0 1605.2 5 0.056 0 0.000 0.056
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
4608.0 1024.0 0.0 1008.0 32768.0 29610.6 20480.0 11614.8 16384.0 15835.8 1792.0 1605.2 5 0.056 0 0.000 0.056
4608.0 1024.0 0.0 1008.0 32768.0 29610.6 20480.0 11614.8 16384.0 15835.8 1792.0 1605.2 5 0.056 0 0.000 0.056
4608.0 1024.0 0.0 1008.0 32768.0 29610.6 20480.0 11614.8 16384.0 15835.8 1792.0 1605.2 5 0.056 0 0.000 0.056
4608.0 1024.0 0.0 1008.0 32768.0 29610.6 20480.0 11614.8 16384.0 15835.8 1792.0 1605.2 5 0.056 0 0.000 0.056
- 顯示字段說明
PerfCounter key:jcmd 7654 PerfCounter.print |grep sun.gc.generation.0.space.1.capacity
字段 說明 PerfCounter key S0C 倖存區0(Survivor space 0)容量大小(kb) ,本例中爲4608kb sun.gc.generation.0.space.1.capacity S1C 倖存區1(Survivor space 1)容量大小(kb) ,本例中爲1024kb,也就是兩個倖存區大小不一定一樣大 sun.gc.generation.0.space.2.capacity S0U 倖存區0已用空間(kb),本例中爲0kb sun.gc.generation.0.space.1.used S1U 倖存區1已用空間(kb),本例中爲1008kb sun.gc.generation.0.space.2.used EC 伊甸園(eden)容量大小(kb),本例中爲32768kb sun.gc.generation.0.space.0.capacity EU 伊甸園(eden)已用空間大小(kb),本例中爲29610.6kb sun.gc.generation.0.space.0.used OC 老年代(old)容量大小(kb),本例中爲20480kb sun.gc.generation.1.space.0.capacity OU 老年代(old)已用空間大小(kb),本例中爲11614.8kb sun.gc.generation.1.space.0.used MC 元空間(Metaspace)容量(Committed)大小(kb),本例中爲16384kb sun.gc.metaspace.capacity MU 元空間(Metaspace)已用空間大小(kb),本例中爲15835.8kb sun.gc.metaspace.used CCSC 壓縮類空間(Compressed class space)容量(Committed)大小(kb),本例中爲1792kb sun.gc.compressedclassspace.capacity CCSU 壓縮類空間已用空間大小(kb),本例中爲1605.2 kb sun.gc.compressedclassspace.used YGC 年輕代垃圾回收次數,本例中已執行了5次Young GC sun.gc.collector.0.invocations YGCT 年輕代垃圾回收耗時(秒),本例中執行Young GC耗時0.056秒 sun.gc.collector.0.time (納秒) FGC 整堆垃圾回收次數,本例中已執行了0次Full GC sun.gc.collector.1.invocations FGCT 整堆垃圾回收耗時(秒),本例中執行Full GC耗時0秒 sun.gc.collector.1.time (納秒) GCT 垃圾回收耗時(YGCT+FGCT),本例中爲0.056秒 可能是個計算量
垃圾收集-gcnew
此選項更關注年輕代垃圾回收,大部分信息被-gc選項覆蓋。
# 以1秒/次速度顯示1000次年輕代gc信息,每顯示10次後重新顯示標題
[root@localhost ~]# jstat -gcnew -h10 7654 1s 1000
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
4608.0 5120.0 1248.0 0.0 5 15 5120.0 65024.0 14366.4 6 0.063
4608.0 5120.0 1248.0 0.0 5 15 5120.0 65024.0 14366.4 6 0.063
4608.0 5120.0 1248.0 0.0 5 15 5120.0 65024.0 14366.4 6 0.063
4608.0 5120.0 1248.0 0.0 5 15 5120.0 65024.0 14366.4 6 0.063
4608.0 5120.0 1248.0 0.0 5 15 5120.0 65024.0 14366.4 6 0.063
4608.0 5120.0 1248.0 0.0 5 15 5120.0 65024.0 14366.4 6 0.063
4608.0 5120.0 1248.0 0.0 5 15 5120.0 65024.0 14366.4 6 0.063
4608.0 5120.0 1248.0 0.0 5 15 5120.0 65024.0 14366.4 6 0.063
4608.0 5120.0 1248.0 0.0 5 15 5120.0 65024.0 14366.4 6 0.063
4608.0 5120.0 1248.0 0.0 5 15 5120.0 65024.0 14366.4 6 0.063
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
4608.0 5120.0 1248.0 0.0 5 15 5120.0 65024.0 14366.4 6 0.063
4608.0 5120.0 1248.0 0.0 5 15 5120.0 65024.0 14366.4 6 0.063
4608.0 5120.0 1248.0 0.0 5 15 5120.0 65024.0 14366.4 6 0.063
4608.0 5120.0 1248.0 0.0 5 15 5120.0 65024.0 14366.4 6 0.063
從列信息中看,較-gc增加了TT、MTT、DSS三列,其餘全部被-gc覆蓋,索引只介紹新增的列,其餘列可以參照-gc部分的描述
- 顯示字段說明
PerfCounter key:jcmd 7654 PerfCounter.print |grep sun.gc.generation.0.space.1.capacity
字段 說明 PerfCounter key TT 年輕代對象晉升老年代閾值(動態計算),本地中爲5 sun.gc.policy.tenuringThreshold MTT 年輕代對象晉升老年代最大閾(可通過 -XX:MaxTenuringThreshold
設置),本例中爲15sun.gc.policy.maxTenuringThreshold DSS Desired survivor size
期望的倖存區大小(kb),本例爲5120kbsun.gc.policy.desiredSurvivorSize
垃圾收集-gcold
此選項更關注老年代垃圾回收,全部信息都被-gc選項覆蓋,不展開介紹。
# 以1秒/次速度顯示1000次老年代gc信息,每顯示10次後重新顯示標題
[root@localhost ~]# jstat -gcold -h10 7654 1s 1000
MC MU CCSC CCSU OC OU YGC FGC FGCT GCT
16384.0 15954.0 1792.0 1605.7 20480.0 11614.8 6 0 0.000 0.063
16384.0 15954.0 1792.0 1605.7 20480.0 11614.8 6 0 0.000 0.063
16384.0 15954.0 1792.0 1605.7 20480.0 11614.8 6 0 0.000 0.063
16384.0 15954.0 1792.0 1605.7 20480.0 11614.8 6 0 0.000 0.063
16384.0 15954.0 1792.0 1605.7 20480.0 11614.8 6 0 0.000 0.063
16384.0 15954.0 1792.0 1605.7 20480.0 11614.8 6 0 0.000 0.063
16384.0 15954.0 1792.0 1605.7 20480.0 11614.8 6 0 0.000 0.063
16384.0 15954.0 1792.0 1605.7 20480.0 11614.8 6 0 0.000 0.063
16384.0 15954.0 1792.0 1605.7 20480.0 11614.8 6 0 0.000 0.063
16384.0 15954.0 1792.0 1605.7 20480.0 11614.8 6 0 0.000 0.063
MC MU CCSC CCSU OC OU YGC FGC FGCT GCT
16384.0 15954.0 1792.0 1605.7 20480.0 11614.8 6 0 0.000 0.063
16384.0 15954.0 1792.0 1605.7 20480.0 11614.8 6 0 0.000 0.063
16384.0 15954.0 1792.0 1605.7 20480.0 11614.8 6 0 0.000 0.063
垃圾收集-gccapacity
# 顯示各代容量信息
[root@localhost ~]# jstat -gccapacity 7654
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC
10240.0 155648.0 75776.0 4608.0 5120.0 65024.0 20480.0 311296.0 20480.0 20480.0 0.0 1064960.0 16384.0 0.0 1048576.0 1792.0 6 0
- 顯示字段說明
PerfCounter key:jcmd 7654 PerfCounter.print |grep sun.gc.generation.0.minCapacity
字段 說明 PerfCounter key NGCMN 年輕代最小容量(kb) ,本例中爲10240kb sun.gc.generation.0.minCapacity (字節) NGCMX 年輕代最大容量(kb) ,本例中爲155648kb sun.gc.generation.0.maxCapacity (字節) NGC 當前年輕代容量(kb) ,本例中爲75776kb sun.gc.generation.0.capacity (字節) S0C 倖存區0容量(kb) ,本例中爲4608kb sun.gc.generation.0.space.1.capacity (字節) S1C 倖存區1容量(kb) ,本例中爲5120kb sun.gc.generation.0.space.2.capacity (字節) EC 伊甸園容量(kb) ,本例中爲65024kb sun.gc.generation.0.space.0.capacity (字節) OGCMN 老年代最小容量(kb) ,本例中爲20480kb sun.gc.generation.1.minCapacity (字節) NGCMX 老年代最大容量(kb) ,本例中爲311296kb sun.gc.generation.1.maxCapacity (字節) OGC 當前老年代容量,本例爲20480kb sun.gc.generation.1.capacity (字節) OC 當前老年區容量(老年代只有一個老年區),本例爲20480kb sun.gc.generation.1.space.0.capacity MCMN 元空間最小容量(kb) ,本例中爲0kb sun.gc.metaspace.minCapacity (字節) MCMX 元空間最大容量(kb) ,本例中爲1064960kb sun.gc.metaspace.maxCapacity (字節) MC 當前元空間容量,本例爲16384kb sun.gc.metaspace.capacity (字節) CCSMN Compressed class space
壓縮類空間最小容量(kb) ,本例中爲0kbsun.gc.compressedclassspace.minCapacity (字節) MCMX 壓縮類空間最大容量(kb) ,本例中爲1048576kb sun.gc.compressedclassspace.maxCapacity (字節) CCSC 當前壓縮類空間容量,本例爲1792kb sun.gc.compressedclassspace.capacity (字節) YGC Young GC次數 sun.gc.collector.0.invocations (次) FGC Full GC次數 sun.gc.collector.1.invocations (次)
垃圾收集-gcnewcapacity
相比於-gccapacity,更關注與年輕代容量信息
# 查看年輕代容量信息
[root@localhost ~]# jstat -gcnewcapacity 7654
NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC
10240.0 155648.0 75776.0 51712.0 4608.0 51712.0 5120.0 154624.0 65024.0 6 0
從列信息中看,較-gccapacity增加了S0CMX、S1CMX、ECMX三列,其餘全部被-gccapacity覆蓋,所以只介紹新增的列,其餘列可以參照-gccapacity部分的描述
- 顯示字段說明
PerfCounter key:jcmd 7654 PerfCounter.print |grep sun.gc.generation.0.minCapacity
字段 說明 PerfCounter key S0CMX 倖存區0最大容量(kb) ,本例中爲51712kb sun.gc.generation.0.space.1.maxCapacity (字節) S1CMX 倖存區1最大容量(kb) ,本例中爲51712kb sun.gc.generation.0.space.2.maxCapacity (字節) ECMX 伊甸園最大容量(kb) ,本例中爲154624kb sun.gc.generation.0.space.0.maxCapacity (字節)
垃圾收集-gcoldcapacity
此選項更關注老年代垃圾回收,全部信息都被-gccapacity選項覆蓋,不展開介紹。
# 顯示老年代容量信息
[root@localhost ~]# jstat -gcoldcapacity 7654
OGCMN OGCMX OGC OC YGC FGC FGCT GCT
20480.0 311296.0 20480.0 20480.0 6 0 0.000 0.063
垃圾收集-gcmetacapacity
此選項更關注元空間垃圾回收,全部信息都被-gccapacity選項覆蓋,不展開介紹。
# 顯示元空間容量信息
[root@localhost ~]# jstat -gcmetacapacity 7654
MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC FGCT GCT
0.0 1064960.0 16384.0 0.0 1048576.0 1792.0 6 0 0.000 0.063
垃圾收集-gcutil
以百分比的形式展示垃圾收集統計信息。
# 以1秒/次速率顯示gc統計信息,每隔10行顯示1次標題,直至手動結束(ctrl+c)或虛擬機終止
[root@localhost ~]# jstat -gcutil -t -h10 7654 1s
Timestamp S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
19053.4 27.08 0.00 83.40 56.71 97.38 89.60 6 0.063 0 0.000 0.063
19054.4 27.08 0.00 83.40 56.71 97.38 89.60 6 0.063 0 0.000 0.063
19055.4 27.08 0.00 83.40 56.71 97.38 89.60 6 0.063 0 0.000 0.063
19056.4 27.08 0.00 83.40 56.71 97.38 89.60 6 0.063 0 0.000 0.063
19057.4 27.08 0.00 83.40 56.71 97.38 89.60 6 0.063 0 0.000 0.063
19058.4 27.08 0.00 83.40 56.71 97.38 89.60 6 0.063 0 0.000 0.063
19059.4 27.08 0.00 83.40 56.71 97.38 89.60 6 0.063 0 0.000 0.063
19060.4 27.08 0.00 83.40 56.71 97.38 89.60 6 0.063 0 0.000 0.063
19061.4 27.08 0.00 83.40 56.71 97.38 89.60 6 0.063 0 0.000 0.063
19062.5 27.08 0.00 83.40 56.71 97.38 89.60 6 0.063 0 0.000 0.063
Timestamp S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
19063.4 27.08 0.00 83.40 56.71 97.38 89.60 6 0.063 0 0.000 0.063
19064.4 27.08 0.00 83.40 56.71 97.38 89.60 6 0.063 0 0.000 0.063
19065.4 27.08 0.00 83.40 56.71 97.38 89.60 6 0.063 0 0.000 0.063
.....
顯示字段解釋:
S0: 倖存區0(Survivor space 0
)使用百分比,本例爲27.8%.
S1: 倖存區1(Survivor space 1
)使用百分比,本例爲0%.
E: 伊甸園(Eden space
)使用百分比,本例爲83.4%.
O: 老年區(Old space
)使用百分比,本例爲56.71%.
M: 元空間(Metaspace
)使用百分比,本例爲97.38%.
CCS: 壓縮類空間(Compressed class space
)使用百分比,本例爲89.6%.
YGC: 年輕代發生垃圾回收次數,本例中發生6次年輕代垃圾回收.
YGCT: 年輕代垃圾回收耗時(s),本例中YGC耗時0.063秒.
FGC: Full GC次數,本例發生0次Full GC.
FGCT: Full GC耗時(s),本例FGC耗時0秒.
GCT: GCT=YGCT+FGCT,即所有垃圾回收耗時,本例所有垃圾回收耗時0.063秒
垃圾收集-gccause
顯示的GC統計信息與-gcutil一致,額外增加上一次GC發生原因(LGCC)和當前GC發生原因(GCC)。
# 查看gc引發原因,每兩秒查看異常,查看5次
[root@localhost ~]# jstat -gccause 7654 2s 5
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT LGCC GCC
27.08 0.00 98.99 56.71 97.38 89.60 6 0.063 0 0.000 0.063 Allocation Failure No GC
27.08 0.00 98.99 56.71 97.38 89.60 6 0.063 0 0.000 0.063 Allocation Failure No GC
27.08 0.00 98.99 56.71 97.38 89.60 6 0.063 0 0.000 0.063 Allocation Failure No GC
27.08 0.00 98.99 56.71 97.38 89.60 6 0.063 0 0.000 0.063 Allocation Failure No GC
27.08 0.00 98.99 56.71 97.38 89.60 6 0.063 0 0.000 0.063 Allocation Failure No GC
本例中上次GC原因爲分配對象內存失敗(Allocation Failure);監控期間無GC發生,因此GCC爲No GC。
參考鏈接
JDK13-index:https://docs.oracle.com/en/java/javase/13/docs/specs/man/index.html
JDK13-jstat:https://docs.oracle.com/en/java/javase/13/docs/specs/man/jstat.html
JDK8-index:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/
JDK8-jstat:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html#BEHHGFAE