jstat
- 可以檢查
JVM
整體的執行情況,可以看到 新生代,老年代等的記憶體使用情況,以及GC
次數和耗時 - 命令格式 如
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
- 其中
-option
必選參數列示命令引數 如gc
等,-t
為可選參數列示是否列印時間(秒),-h<lines>
可選引數,表示每隔多少行列印頭部列表,如設定-h 5
, 那麼每五條記錄就會重新列印表頭,vmid
必選引數,Java
程式id
,interval
可選參數列示取樣的時間間隔,count
可選參數列示需要取樣多少條,
jstat -gc pid
jstat -gc pid
這是最常用的語法,可以直接檢視記憶體和垃圾回收情況- 首先我們要獲得
Java
程式的PID
資訊,可以通過jps
命令來獲取 - 之後執行
jstat -gc pid
即可看到對應Java
程式的記憶體情況,如下:
-
這裡說明一下關於這些列名的含義:
S0C
: 新生代中第一個Survivor
(即From
區)的容量大小 (千位元組)S1C
: 新生代中第二個Survivor
(即To
區)的容量大小 (千位元組)S0U
: 新生代From Survivor
區已使用記憶體大小(千位元組)S1U
: 新生代To Survivor
區一使用記憶體大小(千位元組)EC
: 新生代Eden
區的容量大小(千位元組)EU
: 新生代Eden
區已使用記憶體大小(千位元組)OC
: 老年代空間容量大小(千位元組)OU
: 老年代已使用記憶體大小(千位元組)MC
: 方法區的空間大小 (千位元組)MU
: 方法區已使用的空間大小(千位元組)YGC
: 從系統啟動到現在Young GC/Minor GC
的次數YGCT
:Young GC
總耗時(秒)FGC
:從系統啟動到現在Full GC
的次數FGCT
:Full GC
的總耗時(秒)GCT
: 垃圾回收總的耗時(秒)NGCMN
:年輕代(young
)中初始化(最小)的大小 (千位元組)NGCMX
:年輕代(young
)的最大容量 (千位元組)GC
:年輕代(young
)中當前的容量 (千位元組)OGCMN
:old
代中初始化(最小)的大小 (千位元組)OGCMX
:old
代的最大容量 (千位元組)OGC
:old
代當前新生成的容量 (千位元組)PGCMN
:perm
代中初始化(最小)的大小 (千位元組)PGCMX
:perm
代的最大容量 (千位元組)PGC
:perm
代當前新生成的容量 (千位元組)S0
:年輕代中From survivor
(倖存區)已使用的佔當前容量百分比S1
:年輕代中To Survivor
(倖存區)已使用的佔當前容量百分比E
:年輕代中Eden
(伊甸園)已使用的佔當前容量百分比O
:old
代已使用的佔當前容量百分比P
:perm
代已使用的佔當前容量百分比S0CMX
:年輕代中From survivor
(倖存區)的最大容量 (千位元組)S1CMX
:年輕代中To Survivor
(倖存區)的最大容量 (千位元組)ECMX
:年輕代中Eden
(伊甸園)的最大容量 (千位元組)DSS
:當前需要survivor
(倖存區)的容量 (千位元組)(Eden
區已滿)TT
: 持有次數限制MTT
: 最大持有次數限制
jstat -gcutil PID
- 一般我們還可以通過
jstat -gcutil pid
來獲取分代年齡的使用情況,顯示為佔比,如下,表頭參考上面
jstat -gccapacity PID
-gccapacity
命令主要用來分析堆記憶體,用法參考上面,如下效果,表頭含義參看上面
其他一些命令引數
jstat -gcnew PID
: 年輕代GC
分析,其中TT
和MTT
可以看到物件在年齡代存活的年齡和存活的最大年齡
jstat -gcnewcapacity PID
: 年輕代記憶體分析
jstat -gcold PID
: 老年代GC
分析
jstat -gcoldcapacity
: 老年代記憶體分析
jstat -gcmetacapacity PID
: 後設資料記憶體分析
jstat -class PID
- 統計程式中載入的類的數量,如下:
- 說明:
Loaded:載入class的數量
Bytes:所佔用空間大小
Unloaded:未載入數量
Bytes:未載入佔用空間
Time:時間
jstat -compiler PID
- 編譯資訊的統計命令, 如下命令
jstat -class 15372
- 說明:
Compiled:編譯數量。
Failed:失敗數量
Invalid:不可用數量
Time:時間
FailedType:失敗型別
FailedMethod:失敗的方法
jstat -printcompilation PID
JVM
編譯方法的統計,如下命令jstat -printcompilation 15372
- 說明:
Compiled:最近編譯方法的數量
Size:最近編譯方法的位元組碼數量
Type:最近編譯方法的編譯型別。
Method:方法名標識。
好了今天就說到這裡,
jstat
死一個非常還用的工具,需要平時多使用多分析才能真真掌握,下次我們接著說相關的工具的使用~????
本文由AnonyStar 釋出,可轉載但需宣告原文出處。
歡迎關注微信公賬號 :雲棲簡碼 獲取更多優質文章
更多文章關注筆者部落格 :雲棲簡碼 i-code.online