jstat(JVM Statistics Monitoring Tool)是用於監控虛擬機各類運行狀態信息的命令行工具。他能夠顯示本地或遠程虛擬機進程中的類裝載、內存、垃圾收集、JIT編譯等運行數據,在沒有GUI圖形的服務器上,它是運行期定位虛擬機性能問題的首選工具。java
jstat位於java的bin目錄下,主要利用JVM內建的指令對Java應用程序的資源和性能進行實時的命令行的監控,包括了對Heap size和垃圾回收情況的監控。可見,Jstat是輕量級的、專門針對JVM的工具,很是適用。服務器
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
Option — 選項,咱們通常使用 -gcutil 查看gc狀況工具
vmid — VM的進程號,即當前運行的java進程號性能
interval– 間隔時間,單位爲秒或者毫秒spa
count — 打印次數,若是缺省則打印無數次命令行
參數interval和count表明查詢間隔和次數,若是省略這兩個參數,說明只查詢一次。假設須要每250毫秒查詢一次進程5828垃圾收集情況,一共查詢5次,那命令行以下:code
jstat -gc 5828 250 5
對於命令格式中的
VMID
與LVMID
須要特別說明下:若是是本地虛擬機進程,VMID
(Virtual Machine IDentifier,虛機標識符)和LVMID
(Local Virtual Machine IDentifier,虛機標識符)是一致的,若是是遠程虛擬機進程,那VMID的格式應當是:[protocol:][//] lvmid [@hostname[:port]/servername]
server
選項option表明這用戶但願查詢的虛擬機信息,主要分爲3類:類裝載、垃圾收集和運行期編譯情況,具體選項及做用以下:對象
–
class
監視類裝載、卸載數量、總空間及類裝載所耗費的時間 –gc
監視Java堆情況,包括Eden區、2個Survivor區、老年代、永久代等的容量 –gccapacity
監視內容與-gc基本相同,但輸出主要關注Java堆各個區域使用到的最大和最小空間 –gcutil
監視內容與-gc基本相同,但輸出主要關注已使用空間佔總空間的百分比 –gccause
與-gcutil功能同樣,可是會額外輸出致使上一次GC產生的緣由 –gcnew
監視新生代GC的情況 –gcnewcapacity
監視內容與-gcnew基本相同,輸出主要關注使用到的最大和最小空間 –gcold
監視老年代GC的情況 –gcoldcapacity
監視內容與——gcold基本相同,輸出主要關注使用到的最大和最小空間 –gcpermcapacity
輸出永久代使用到的最大和最小空間 –compiler
輸出JIT編譯器編譯過的方法、耗時等信息 –printcompilation
輸出已經被JIT編譯的方法進程
jstat –class<pid> :
顯示加載class的數量,及所佔空間等信息。
Loaded
裝載的類的數量Bytes
裝載類所佔用的字節數Unloaded
卸載類的數量Bytes
卸載類的字節數Time
裝載和卸載類所花費的時間
jstat -compiler <pid>
顯示VM實時編譯的數量等信息。
Compiled
編譯任務執行數量Failed
編譯任務執行失敗數量Invalid
編譯任務執行失效數量Time
編譯任務消耗時間FailedType
最後一個編譯失敗任務的類型FailedMethod
最後一個編譯失敗任務所在的類及方法
jstat -gc <pid>
: 能夠顯示gc的信息,查看gc的次數,及時間。
S0C
年輕代中第一個survivor(倖存區)的容量 (字節)S1C
年輕代中第二個survivor(倖存區)的容量 (字節)S0U
年輕代中第一個survivor(倖存區)目前已使用空間 (字節)S1U
年輕代中第二個survivor(倖存區)目前已使用空間 (字節)EC
年輕代中Eden(伊甸園)的容量 (字節)EU
年輕代中Eden(伊甸園)目前已使用空間 (字節)OC
Old代的容量 (字節)OU
Old代目前已使用空間 (字節)PC
Perm(持久代)的容量 (字節)PU
Perm(持久代)目前已使用空間 (字節)YGC
從應用程序啓動到採樣時年輕代中gc次數YGCT
從應用程序啓動到採樣時年輕代中gc所用時間(s)FGC
從應用程序啓動到採樣時old代(全gc)gc次數FGCT
從應用程序啓動到採樣時old代(全gc)gc所用時間(s)GCT
從應用程序啓動到採樣時gc用的總時間(s)
jstat -gccapacity <pid>:
能夠顯示,VM內存中三代(young,old,perm)對象的使用和佔用大小
NGCMN
年輕代(young)中初始化(最小)的大小(字節)NGCMX
年輕代(young)的最大容量 (字節)NGC
年輕代(young)中當前的容量 (字節)S0C
年輕代中第一個survivor(倖存區)的容量 (字節)S1C
年輕代中第二個survivor(倖存區)的容量 (字節)EC
年輕代中Eden(伊甸園)的容量 (字節)OGCMN
old代中初始化(最小)的大小 (字節)OGCMX
old代的最大容量(字節)OGC
old代當前新生成的容量 (字節)OC
Old代的容量 (字節)PGCMN
perm代中初始化(最小)的大小 (字節)PGCMX
perm代的最大容量 (字節)
PGC
perm代當前新生成的容量 (字節)PC
Perm(持久代)的容量 (字節)YGC
從應用程序啓動到採樣時年輕代中gc次數FGC
從應用程序啓動到採樣時old代(全gc)gc次數
jstat -gcutil <pid>
:統計gc信息
S0
年輕代中第一個survivor(倖存區)已使用的佔當前容量百分比S1
年輕代中第二個survivor(倖存區)已使用的佔當前容量百分比E
年輕代中Eden(伊甸園)已使用的佔當前容量百分比O
old代已使用的佔當前容量百分比P
perm代已使用的佔當前容量百分比YGC
從應用程序啓動到採樣時年輕代中gc次數YGCT
從應用程序啓動到採樣時年輕代中gc所用時間(s)FGC
從應用程序啓動到採樣時old代(全gc)gc次數FGCT
從應用程序啓動到採樣時old代(全gc)gc所用時間(s)GCT
從應用程序啓動到採樣時gc用的總時間(s)
jstat -gcnew <pid>
:年輕代對象的信息。
S0C
年輕代中第一個survivor(倖存區)的容量 (字節)S1C
年輕代中第二個survivor(倖存區)的容量 (字節)S0U
年輕代中第一個survivor(倖存區)目前已使用空間 (字節)S1U
年輕代中第二個survivor(倖存區)目前已使用空間 (字節)TT
持有次數限制MTT
最大持有次數限制EC
年輕代中Eden(伊甸園)的容量 (字節)EU
年輕代中Eden(伊甸園)目前已使用空間 (字節)YGC
從應用程序啓動到採樣時年輕代中gc次數YGCT
從應用程序啓動到採樣時年輕代中gc所用時間(s)
jstat -gcnewcapacity<pid>
: 年輕代對象的信息及其佔用量。
NGCMN
年輕代(young)中初始化(最小)的大小(字節)NGCMX
年輕代(young)的最大容量 (字節)NGC
年輕代(young)中當前的容量 (字節)S0CMX
年輕代中第一個survivor(倖存區)的最大容量 (字節)S0C
年輕代中第一個survivor(倖存區)的容量 (字節)S1CMX
年輕代中第二個survivor(倖存區)的最大容量 (字節)S1C
年輕代中第二個survivor(倖存區)的容量 (字節)ECMX
年輕代中Eden(伊甸園)的最大容量 (字節)EC
年輕代中Eden(伊甸園)的容量 (字節)YGC
從應用程序啓動到採樣時年輕代中gc次數FGC
從應用程序啓動到採樣時old代(全gc)gc次數
八、jstat -gcold <pid>:
old代對象的信息。
PC
Perm(持久代)的容量 (字節)PU
Perm(持久代)目前已使用空間 (字節)OC
Old代的容量 (字節)OU
Old代目前已使用空間 (字節)YGC
從應用程序啓動到採樣時年輕代中gc次數FGC
從應用程序啓動到採樣時old代(全gc)gc次數FGCT
從應用程序啓動到採樣時old代(全gc)gc所用時間(s)GCT
從應用程序啓動到採樣時gc用的總時間(s)
九、stat -gcoldcapacity <pid>
: old代對象的信息及其佔用量。
OGCMN
old代中初始化(最小)的大小 (字節)OGCMX
old代的最大容量(字節)OGC
old代當前新生成的容量 (字節)OC
Old代的容量 (字節)YGC
從應用程序啓動到採樣時年輕代中gc次數FGC
從應用程序啓動到採樣時old代(全gc)gc次數FGCT
從應用程序啓動到採樣時old代(全gc)gc所用時間(s)GCT
從應用程序啓動到採樣時gc用的總時間(s)
十、jstat -gcpermcapacity<pid>
: perm對象的信息及其佔用量。
PGCMN
perm代中初始化(最小)的大小 (字節)PGCMX
perm代的最大容量 (字節)
PGC
perm代當前新生成的容量 (字節)PC
Perm(持久代)的容量 (字節)YGC
從應用程序啓動到採樣時年輕代中gc次數FGC
從應用程序啓動到採樣時old代(全gc)gc次數FGCT
從應用程序啓動到採樣時old代(全gc)gc所用時間(s)GCT
從應用程序啓動到採樣時gc用的總時間(s)
十一、jstat -printcompilation <pid>
:當前VM執行的信息。
Compiled
編譯任務的數目Size
方法生成的字節碼的大小Type
編譯類型Method
類名和方法名用來標識編譯的方法。類名使用/作爲一個命名空間分隔符。方法名是給定類中的方法。上述格式是由-XX:+PrintComplation選項進行設置的