JSTAT命令-對Java應用程序的資源和性能進行實時的監控

       對於監控JVM,jdk也提供了很多工具,供我們來使用,其中命令jstat,是JDK自帶的一個輕量級小工具,可以查看堆內存各部分的使用量,以及加載類的數量,對Java應用程序的資源和性能進行實時的監控,包括了對Heap size和垃圾回收狀況的監控。命令行輸入jstat可以查看這個命令的用法。

用法格式爲:jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

  • option: 參數選項
  • -t: 可以在打印的列加上Timestamp列,用於顯示系統運行的時間
  • -h: 可以在週期性數據數據的時候,可以在指定輸出多少行以後輸出一次表頭
  • vmid: Virtual Machine ID( 進程的 pid)
  • interval: 執行每次的間隔時間,單位爲毫秒
  • count: 用於指定輸出多少次記錄,缺省則會一直打印

輸入jstat -options可以查看參數選擇:

各個參數含義如下:

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

下面通過實例來看一下jstat -options各個參數,首先要用jps工具找出一個Java程序對於的PID:

參數-class :

Loaded : 已經裝載的類的數量
Bytes : 裝載類所佔用的字節數
Unloaded:已經卸載類的數量
Bytes:卸載類的字節數
Time:裝載和卸載類所花費的時間

參數-compiler:

Compiled:編譯任務執行數量
Failed:編譯任務執行失敗數量
Invalid :編譯任務執行失效數量
Time :編譯任務消耗時間
FailedType:最後一個編譯失敗任務的類型
FailedMethod:最後一個編譯失敗任務所在的類及方法

參數-gc:

S0C:年輕代中第一個survivor(倖存區)的容量 (字節)
S1C:年輕代中第二個survivor(倖存區)的容量 (字節)
S0U :年輕代中第一個survivor(倖存區)目前已使用空間 (字節)
S1U :年輕代中第二個survivor(倖存區)目前已使用空間 (字節)
EC :年輕代中Eden(伊甸園)的容量 (字節)
EU :年輕代中Eden(伊甸園)目前已使用空間 (字節)
OC :Old代的容量 (字節)
OU :Old代目前已使用空間 (字節)
MC:metaspace(元空間)的容量 (字節)
MU:metaspace(元空間)目前已使用空間 (字節)
CCSC:壓縮類空間大小
CCSU:壓縮類空間使用大小
YGC :從應用程序啓動到採樣時年輕代中gc次數
YGCT :從應用程序啓動到採樣時年輕代中gc所用時間(s)
FGC :從應用程序啓動到採樣時old代(全gc)gc次數
FGCT :從應用程序啓動到採樣時old代(全gc)gc所用時間(s)
GCT:從應用程序啓動到採樣時gc用的總時間(s)

參數-gccapacity:

NGCMN :年輕代(young)中初始化(最小)的大小(字節)
NGCMX :年輕代(young)的最大容量 (字節)
NGC :年輕代(young)中當前的容量 (字節)
S0C :年輕代中第一個survivor(倖存區)的容量 (字節)
S1C : 年輕代中第二個survivor(倖存區)的容量 (字節)
EC :年輕代中Eden(伊甸園)的容量 (字節)
OGCMN :old代中初始化(最小)的大小 (字節)
OGCMX :old代的最大容量(字節)
OGC:old代當前新生成的容量 (字節)
OC :Old代的容量 (字節)
MCMN:metaspace(元空間)中初始化(最小)的大小 (字節)
MCMX :metaspace(元空間)的最大容量 (字節)
MC :metaspace(元空間)當前新生成的容量 (字節)
CCSMN:最小壓縮類空間大小
CCSMX:最大壓縮類空間大小
CCSC:當前壓縮類空間大小
YGC :從應用程序啓動到採樣時年輕代中gc次數
FGC:從應用程序啓動到採樣時old代(全gc)gc次數

參數-gccause:

S0 :年輕代中第一個survivor(倖存區)已使用的佔當前容量百分比
S1 :年輕代中第二個survivor(倖存區)已使用的佔當前容量百分比
E :年輕代中Eden(伊甸園)已使用的佔當前容量百分比
O :old代已使用的佔當前容量百分比
M :元空間已使用的佔當前容量百分比
CCS:壓縮類佔當前容量百分比
YGC :從應用程序啓動到採樣時年輕代中gc次數
YGCT :從應用程序啓動到採樣時年輕代中gc所用時間(s)
FGC :從應用程序啓動到採樣時old代(全gc)gc次數
FGCT :從應用程序啓動到採樣時old代(全gc)gc所用時間(s)
GCT:從應用程序啓動到採樣時gc用的總時間(s)
LGCC:最後一次GC原因
GCC:當前GC原因(No GC 爲當前沒有執行GC)

參數-gcmetacapacity:

MCMN:最小元數據容量
MCMX:最大元數據容量
MC:當前元數據空間大小
CCSMN:最小壓縮類空間大小
CCSMX:最大壓縮類空間大小
CCSC:當前壓縮類空間大小
YGC :從應用程序啓動到採樣時年輕代中gc次數
FGC :從應用程序啓動到採樣時old代(全gc)gc次數
FGCT :從應用程序啓動到採樣時old代(全gc)gc所用時間(s)
GCT:從應用程序啓動到採樣時gc用的總時間(s)

參數 -gcnew:

S0C :年輕代中第一個survivor(倖存區)的容量 (字節)
S1C :年輕代中第二個survivor(倖存區)的容量 (字節)
S0U :年輕代中第一個survivor(倖存區)目前已使用空間 (字節)
S1U :年輕代中第二個survivor(倖存區)目前已使用空間 (字節)
TT:持有次數限制
MTT:最大持有次數限制
DSS:期望的倖存區大小
EC:年輕代中Eden(伊甸園)的容量 (字節)
EU :年輕代中Eden(伊甸園)目前已使用空間 (字節)
YGC :從應用程序啓動到採樣時年輕代中gc次數
YGCT:從應用程序啓動到採樣時年輕代中gc所用時間(s)

參數-gcnewcapacity:

NGCMN :年輕代(young)中初始化(最小)的大小(字節)
NGCMX :年輕代(young)的最大容量 (字節)
NGC :年輕代(young)中當前的容量 (字節)
S0CMX :年輕代中第一個survivor(倖存區)的最大容量 (字節)
S0C :年輕代中第一個survivor(倖存區)的容量 (字節)
S1CMX :年輕代中第二個survivor(倖存區)的最大容量 (字節)
S1C:年輕代中第二個survivor(倖存區)的容量 (字節)
ECMX:年輕代中Eden(伊甸園)的最大容量 (字節)
EC:年輕代中Eden(伊甸園)的容量 (字節)
YGC:從應用程序啓動到採樣時年輕代中gc次數
FGC:從應用程序啓動到採樣時old代(全gc)gc次數

參數-gcold:

MC :metaspace(元空間)的容量 (字節)
MU:metaspace(元空間)目前已使用空間 (字節)
CCSC:壓縮類空間大小
CCSU:壓縮類空間使用大小
OC:Old代的容量 (字節)
OU:Old代目前已使用空間 (字節)
YGC:從應用程序啓動到採樣時年輕代中gc次數
FGC:從應用程序啓動到採樣時old代(全gc)gc次數
FGCT:從應用程序啓動到採樣時old代(全gc)gc所用時間(s)
GCT:從應用程序啓動到採樣時gc用的總時間(s)

參數-gcoldcapacity:

OGCMN :old代中初始化(最小)的大小 (字節)
OGCMX :old代的最大容量(字節)
OGC :old代當前新生成的容量 (字節)
OC :Old代的容量 (字節)
YGC :從應用程序啓動到採樣時年輕代中gc次數
FGC :從應用程序啓動到採樣時old代(全gc)gc次數
FGCT :從應用程序啓動到採樣時old代(全gc)gc所用時間(s)
GCT:從應用程序啓動到採樣時gc用的總時間(s)

參數-gcutil:

S0 :年輕代中第一個survivor(倖存區)已使用的佔當前容量百分比
S1 :年輕代中第二個survivor(倖存區)已使用的佔當前容量百分比
E :年輕代中Eden(伊甸園)已使用的佔當前容量百分比
O :old代已使用的佔當前容量百分比
M :元空間已使用的佔當前容量百分比
CCS:壓縮類佔當前容量百分比
YGC :從應用程序啓動到採樣時年輕代中gc次數
YGCT :從應用程序啓動到採樣時年輕代中gc所用時間(s)
FGC :從應用程序啓動到採樣時old代(全gc)gc次數
FGCT :從應用程序啓動到採樣時old代(全gc)gc所用時間(s)
GCT:從應用程序啓動到採樣時gc用的總時間(s)

參數-printcompilation:

Compiled :編譯任務的數目
Size :方法生成的字節碼的大小
Type:編譯類型
Method:類名和方法名用來標識編譯的方法。類名使用/做爲一個命名空間分隔符。方法名是給定類中的方法。
上述格式是由-XX:+PrintComplation選項進行設置的

對於用法格式爲:jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]],我們知道了-options的用法,和vmid: Virtual Machine ID( 進程的 pid),下面加上時間戳-t選項,和interval指定時間爲1s:

如果沒有指定count,則會一直打印下去,下面我們指定5次來演示一下:

這樣在第5次打印完畢,就會停止打印!

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