jstat命令使用,jstat命令
概述
jstat是一個可以用於觀察java應用程式運行時相關資訊的工具,功能非常強大,可以通過它查看堆資訊的詳細情況。
基本用法
jstat命令的基本使用文法如下:
jstat -option [-t] [-h] pid [interval] [count]
- 選項option可以由以下值構成。
- -class:顯示ClassLoader的相關資訊。
- -compiler:顯示JIT編譯的相關資訊。
- -gc:顯示與gc相關的堆資訊。
- -gccapacity:顯示各個代的容量及使用方式。
- -gccause:顯示記憶體回收的相關資訊(同-gcutil),同時顯示最後一次或當前正在發生的記憶體回收的誘因。
- -gcnew:顯示新生代資訊。
- -gcnewcapacity:顯示新生代大小與使用方式。
- -gcold:顯示老生代和永久代的資訊。
- -gcoldcapacity:顯示老年代的大小。
- -gcpermcapacity:顯示永久代的大小。
- -gcutil:顯示垃圾收集資訊。
- -printcompilation:輸出JIT編譯的方法資訊。
- -t參數可以在輸出資訊前面加上一個Timestamp列,顯示程式啟動並執行時間。
- -h參數可以在周期性的資料輸出時,輸出多少行資料後,跟著輸出一個表頭資訊。
- interval參數用於指定輸出統計資料的周期,單位為毫秒(ms)。
- count參數用於指定一共輸出多少次資料。
詳細使用-class使用
下面命令輸出pid為2500這個進程的ClassLoader相關資訊,每秒統計一次資訊,一共輸出兩次。
Loaded表示載入的類的數量,第一個Bytes表示載入的類的合計大小,Unloaded表示卸載的類數量,第二個Bytes表示卸載的類的合計大小,Time表示載入和卸載類花的總的時間。
-compiler使用
下面的命令查看JIT編譯的資訊:
Compiled表示編譯任務執行的次數,Failed表示編譯失敗的次數,Invalid表示編譯停用次數,Time表示編譯的總耗時,FailedType表示最後一次編譯的類型,FailedMethod表示最後一次編譯失敗的類名和方法名。
-gc使用
下面的命令顯示與gc相關的堆資訊的輸出:
- S0C:s0(from)的大小(KB)
- S1C:s1(from)的大小(KB)
- S0U:s0(from)已使用的空間(KB)
- S1U:s1(from)已經使用的空間(KB)
- EC:eden區的大小(KB)
- EU:eden區已經使用的空間(KB)
- OC:老年代大小(KB)
- OU:老年代已經使用的空間(KB)
- PC:永久區大小(KB)
- PU:永久區已經使用的空間(KB)
- YGC:新生代gc次數
- YGCT:新生代gc耗時
- FGC:Full gc次數
- FGCT:Full gc耗時
- GCT:gc總耗時
-gccapacity使用
下面的命令顯示了各個代的資訊,與-gc相比,它不僅輸出了各個代的當前大小,還輸出了各個代的最大值與最小值:
* NGCMN:新生代最小值(KB)
* NGCMX:新生代最大值(KB)
* NGC:當前新生代大小(KB)
* OGCMN:老年大最小值(KB)
* OGCMX:老年代最大值(KB)
* OGC:當前老年代大小(KB)
* PGCMN:永久代最小值(KB)
* PGCMX:永久代最大值(KB)
-gccause使用
下面命令顯示最近一次gc的原因,以及當前gc的原因:
- LGCC:上次gc的原因,可以看到上次gc的原因是Allocation Failure
- GCC:當前gc的原因,圖中當前沒有gc
-gcnew使用
下面的命令顯示新生代的詳細資料:
* TT:新生代對象晉陞到老年代對象的年齡。
* MTT:新生代對象晉陞到老年代對象的年齡的最大值。
* DSS:所需的Survivor區的大小。
-gcnewcapacity使用
下面的命令詳細輸出了新生代各個區的大小資訊:
* S0CMX:s0區的最大值(KB)
* S1CMX:s1區的最大值(KB)
* ECMX:eden區的最大值(KB)
-gcold使用
下面的命令顯示老年代gc概況:
-gcoldcapacity使用
下面的命令用於顯示老年代的容量資訊:
-gcpermcapacity使用
下面的命令用於顯示永久區的使用方式: