天天看點

JVM 性能調優工具 jstatjstat 用法option 可以從下面參數中選擇

jstat 用法

$ 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.           
  • option: 參數選項
  • -t: 可以在列印的列加上Timestamp列,用于顯示系統運作的時間
  • -h: 可以在周期性資料資料的時候,可以在指定輸出多少行以後輸出一次表頭
  • vmid: Virtual Machine ID( 程序的 pid)
  • interval: 執行每次的間隔時間,機關為毫秒
  • count: 用于指定輸出多少次記錄,預設則會一直列印
$ jstat -options
-class
-compiler
-gc
-gccapacity
-gccause
-gcmetacapacity
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcutil
-printcompilation           

option 可以從下面參數中選擇

  • -class 顯示ClassLoad的相關資訊;
  • -compiler 顯示JIT編譯的相關資訊;
  • -gc 顯示和gc相關的堆資訊;
  • -gccapacity 顯示各個代的容量以及使用情況;
  • -gcmetacapacity 顯示metaspace的大小
  • -gcnew 顯示新生代資訊;
  • -gcnewcapacity 顯示新生代大小和使用情況;
  • -gcold 顯示老年代和永久代的資訊;
  • -gcoldcapacity 顯示老年代的大小;
  • -gcutil 顯示垃圾收集資訊;
  • -gccause 顯示垃圾回收的相關資訊(通-gcutil),同時顯示最後一次或目前正在發生的垃圾回收的誘因;
  • -printcompilation 輸出JIT編譯的方法資訊;

示例一:-class

顯示加載class的數量,及所占空間等資訊。

jstat -class <pid>           
Loaded  Bytes  Unloaded  Bytes     Time
  3350  6358.6        9     9.0       2.14           
  • Loaded : 已經裝載的類的數量
  • Bytes : 裝載類所占用的位元組數
  • Unloaded:已經解除安裝類的數量
  • Bytes:解除安裝類的位元組數
  • Time:裝載和解除安裝類所花費的時間

示例二:-compiler

顯示VM實時編譯(JIT)的數量等資訊。

jstat -compiler <pid>           
Compiled Failed Invalid   Time   FailedType FailedMethod
    1553      0       0     4.41          0           
  • Compiled:編譯任務執行數量
  • Failed:編譯任務執行失敗數量
  • Invalid :編譯任務執行失效數量
  • Time :編譯任務消耗時間
  • FailedType:最後一個編譯失敗任務的類型
  • FailedMethod:最後一個編譯失敗任務所在的類及方法

示例三:-gc

顯示gc相關的堆資訊,檢視gc的次數,及時間。

jstat –gc <pid>           
S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
13312.0 13312.0  0.0    0.0   82432.0    0.0     120832.0   20495.1   19712.0 19399.0 2304.0 2230.7      3    0.063   2      0.153    0.217
13312.0 13312.0  0.0    0.0   82432.0    0.0     120832.0   20495.1   19712.0 19399.0 2304.0 2230.7      3    0.063   2      0.153    0.217
13312.0 13312.0  0.0    0.0   82432.0    0.0     120832.0   20495.1   19712.0 19399.0 2304.0 2230.7      3    0.063   2      0.153    0.217
13312.0 13312.0  0.0    0.0   82432.0    0.0     120832.0   20495.1   19712.0 19399.0 2304.0 2230.7      3    0.063   2      0.153    0.217
13312.0 13312.0  0.0    0.0   82432.0    0.0     120832.0   20495.1   19712.0 19399.0 2304.0 2230.7      3    0.063   2      0.153    0.217
13312.0 13312.0  0.0    0.0   82432.0    0.0     120832.0   20495.1   19712.0 19399.0 2304.0 2230.7      3    0.063   2      0.153    0.217
13312.0 13312.0  0.0    0.0   82432.0    0.0     120832.0   20495.1   19712.0 19399.0 2304.0 2230.7      3    0.063   2      0.153    0.217           
  • S0C:年輕代中第一個survivor(幸存區)的容量 (位元組)
  • S1C:年輕代中第二個survivor(幸存區)的容量 (位元組)
  • S0U :年輕代中第一個survivor(幸存區)目前已使用空間 (位元組)
  • S1U :年輕代中第二個survivor(幸存區)目前已使用空間 (位元組)
  • EC :年輕代中Eden(伊甸園)的容量 (位元組)
  • EU :年輕代中Eden(伊甸園)目前已使用空間 (位元組)
  • OC :Old代的容量 (位元組)
  • OU :Old代目前已使用空間 (位元組)
  • MC:metaspace(元空間)的容量 (位元組)
  • MU:metaspace(元空間)目前已使用空間 (位元組)
  • YGC :從應用程式啟動到采樣時年輕代中gc次數
  • YGCT :從應用程式啟動到采樣時年輕代中gc所用時間(s)
  • FGC :從應用程式啟動到采樣時old代(全gc)gc次數
  • FGCT :從應用程式啟動到采樣時old代(全gc)gc所用時間(s)
  • GCT:從應用程式啟動到采樣時gc用的總時間(s)

示例四:-gccapacity

可以顯示,VM記憶體中三代(young,old,perm)對象的使用和占用大小。

jstat -gccapacity <pid>           
NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC       MCMN     MCMX      MC     CCSMN    CCSMX     CCSC    YGC    FGC
109056.0 238592.0 109056.0 13312.0 13312.0  82432.0   218624.0   478208.0   120832.0   120832.0      0.0 1067008.0  19712.0      0.0 1048576.0   2304.0      3     2           
  • NGCMN :年輕代(young)中初始化(最小)的大小(位元組)
  • NGCMX :年輕代(young)的最大容量 (位元組)
  • NGC :年輕代(young)中目前的容量 (位元組)
  • S0C :年輕代中第一個survivor(幸存區)的容量 (位元組)
  • S1C : 年輕代中第二個survivor(幸存區)的容量 (位元組)
  • OGCMN :old代中初始化(最小)的大小 (位元組)
  • OGCMX :old代的最大容量(位元組)
  • OGC:old代目前新生成的容量 (位元組)
  • MCMN:metaspace(元空間)中初始化(最小)的大小 (位元組)
  • MCMX :metaspace(元空間)的最大容量 (位元組)
  • MC :metaspace(元空間)目前新生成的容量 (位元組)
  • CCSMN:最小壓縮類空間大小
  • CCSMX:最大壓縮類空間大小
  • CCSC:目前壓縮類空間大小
  • FGC:從應用程式啟動到采樣時old代(全gc)gc次數

示例五:-gcmetacapacity

metaspace 中對象的資訊及其占用量。

jstat -gcmetacapacity <pid>           
MCMN       MCMX        MC       CCSMN      CCSMX       CCSC     YGC   FGC    FGCT     GCT
       0.0  1067008.0    19712.0        0.0  1048576.0     2304.0     3     2    0.153    0.217           
  • MCMN:最小中繼資料容量
  • MCMX:最大中繼資料容量
  • MC:目前中繼資料空間大小

示例六:-gcnew

年輕代對象的資訊。

jstat -gcnew <pid>           
S0C    S1C    S0U    S1U   TT MTT  DSS      EC       EU     YGC     YGCT
13312.0 13312.0    0.0    0.0  7  15 13312.0  82432.0      0.0      3    0.063           
  • S1C :年輕代中第二個survivor(幸存區)的容量 (位元組)
  • TT:持有次數限制
  • MTT:最大持有次數限制
  • DSS:期望的幸存區大小
  • EC:年輕代中Eden(伊甸園)的容量 (位元組)
  • YGCT:從應用程式啟動到采樣時年輕代中gc所用時間(s)

示例七:-gcnewcapacity

年輕代對象的資訊及其占用量。

jstat -gcnewcapacity <pid>           
NGCMN      NGCMX       NGC      S0CMX     S0C     S1CMX     S1C       ECMX        EC      YGC   FGC
  109056.0   238592.0   109056.0  79360.0  13312.0  79360.0  13312.0   237568.0    82432.0     3     2           
  • S0CMX :年輕代中第一個survivor(幸存區)的最大容量 (位元組)
  • S1CMX :年輕代中第二個survivor(幸存區)的最大容量 (位元組)
  • ECMX:年輕代中Eden(伊甸園)的最大容量 (位元組)
  • YGC:從應用程式啟動到采樣時年輕代中gc次數

示例八:-gcold

old代對象的資訊。

jstat -gcold <pid>           
MC       MU      CCSC     CCSU       OC          OU       YGC    FGC    FGCT     GCT
 19712.0  19399.0   2304.0   2230.7    120832.0     20495.1      3     2    0.153    0.217           
  • MC :metaspace(元空間)的容量 (位元組)
  • CCSC:壓縮類空間大小
  • CCSU:壓縮類空間使用大小
  • OC:Old代的容量 (位元組)
  • OU:Old代目前已使用空間 (位元組)
  • FGCT:從應用程式啟動到采樣時old代(全gc)gc所用時間(s)

示例九:-gcoldcapacity

old代對象的資訊及其占用量。

jstat -gcoldcapacity <pid>           
OGCMN       OGCMX        OGC         OC       YGC   FGC    FGCT     GCT
   218624.0    478208.0    120832.0    120832.0     3     2    0.153    0.217           
  • OGC :old代目前新生成的容量 (位元組)

示例十:-gcutil

統計gc資訊。

jstat -gcutil <pid>           
S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
  0.00   0.00   0.00  16.96  98.41  96.82      3    0.063     2    0.153    0.217           
  • S0 :年輕代中第一個survivor(幸存區)已使用的占目前容量百分比
  • S1 :年輕代中第二個survivor(幸存區)已使用的占目前容量百分比
  • E :年輕代中Eden(伊甸園)已使用的占目前容量百分比
  • O :old代已使用的占目前容量百分比
  • P :perm代已使用的占目前容量百分比

示例十一:-gccause

顯示垃圾回收的相關資訊(通-gcutil),同時顯示最後一次或目前正在發生的垃圾回收的誘因。

jstat -gccause <pid>           
S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC
  0.00   0.00   0.00  16.96  98.41  96.82      3    0.063     2    0.153    0.217 Heap Inspection Initiated GC No GC           
  • LGCC:最後一次GC原因
  • GCC:目前GC原因(No GC 為目前沒有執行GC)

示例十二:-printcompilation

目前VM執行的資訊。

jstat -printcompilation <pid>           
Compiled  Size  Type Method
    1553      5    1 java/util/zip/ZipFile$ZipFileInflaterInputStream finalize           
  • Compiled :編譯任務的數目
  • Size :方法生成的位元組碼的大小
  • Type:編譯類型
  • Method:類名和方法名用來辨別編譯的方法。類名使用/做為一個命名空間分隔符。方法名是給定類中的方法。上述格式是由-XX:+PrintComplation選項進行設定的