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