Jstat

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編譯統計
  1. 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 ~]#
  1. 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章