JVM監控工具-jstat

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 統計信息採樣間隔,單位可以爲sms,默認單位ms;1秒採樣間隔可以表示爲1s100ms1000
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設置),本例中爲15 sun.gc.policy.maxTenuringThreshold
    DSS Desired survivor size 期望的倖存區大小(kb),本例爲5120kb sun.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) ,本例中爲0kb sun.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

發佈了51 篇原創文章 · 獲贊 6 · 訪問量 9947
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章