
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
