
jstat
- 可以檢查
JVM整體的運行情況,可以看到 新生代,老年代等的內存使用情況,以及GC次數(shù)和耗時 - 命令格式 如
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]] - 其中
-option必選參數(shù)表示命令參數(shù) 如gc等,-t為可選參數(shù)表示是否打印時間(秒),-h<lines>可選參數(shù),表示每隔多少行打印頭部列表,如設置-h 5, 那么每五條記錄就會重新打印表頭,vmid必選參數(shù),Java進程id,interval可選參數(shù)表示采樣的時間間隔,count可選參數(shù)表示需要采樣多少條,

jstat -gc pid
-
jstat -gc pid這是最常用的語法,可以直接查看內存和垃圾回收情況 - 首先我們要獲得
Java進程的PID信息,可以通過jps命令來獲取 - 之后執(zhí)行
jstat -gc pid即可看到對應Java進程的內存情況,如下:

-
這里說明一下關于這些列名的含義:
-
S0C: 新生代中第一個Survivor(即From區(qū))的容量大小 (千字節(jié)) -
S1C: 新生代中第二個Survivor(即To區(qū))的容量大小 (千字節(jié)) -
S0U: 新生代From Survivor區(qū)已使用內存大?。ㄇё止?jié)) -
S1U: 新生代To Survivor區(qū)一使用內存大?。ㄇё止?jié)) -
EC: 新生代Eden區(qū)的容量大?。ㄇё止?jié)) -
EU: 新生代Eden區(qū)已使用內存大?。ㄇё止?jié)) -
OC: 老年代空間容量大小(千字節(jié)) -
OU: 老年代已使用內存大?。ㄇё止?jié)) -
MC: 方法區(qū)的空間大小 (千字節(jié)) -
MU: 方法區(qū)已使用的空間大小(千字節(jié)) -
YGC: 從系統(tǒng)啟動到現(xiàn)在Young GC/Minor GC的次數(shù) -
YGCT:Young GC總耗時(秒) -
FGC:從系統(tǒng)啟動到現(xiàn)在Full GC的次數(shù) -
FGCT:Full GC的總耗時(秒) -
GCT: 垃圾回收總的耗時(秒) -
NGCMN:年輕代(young)中初始化(最小)的大小 (千字節(jié)) -
NGCMX:年輕代(young)的最大容量 (千字節(jié)) -
GC:年輕代(young)中當前的容量 (千字節(jié)) -
OGCMN:old代中初始化(最小)的大小 (千字節(jié)) -
OGCMX:old代的最大容量 (千字節(jié)) -
OGC:old代當前新生成的容量 (千字節(jié)) -
PGCMN:perm代中初始化(最小)的大小 (千字節(jié)) -
PGCMX:perm代的最大容量 (千字節(jié)) -
PGC:perm代當前新生成的容量 (千字節(jié)) -
S0:年輕代中From survivor(幸存區(qū))已使用的占當前容量百分比 -
S1:年輕代中To Survivor(幸存區(qū))已使用的占當前容量百分比 -
E:年輕代中Eden(伊甸園)已使用的占當前容量百分比 -
O:old代已使用的占當前容量百分比 -
P:perm代已使用的占當前容量百分比 -
S0CMX:年輕代中From survivor(幸存區(qū))的最大容量 (千字節(jié)) -
S1CMX:年輕代中To Survivor(幸存區(qū))的最大容量 (千字節(jié)) -
ECMX:年輕代中Eden(伊甸園)的最大容量 (千字節(jié)) -
DSS:當前需要survivor(幸存區(qū))的容量 (千字節(jié))(Eden區(qū)已滿) -
TT: 持有次數(shù)限制 -
MTT: 最大持有次數(shù)限制
<a name="nZdje"></a>
-
jstat -gcutil PID
- 一般我們還可以通過
jstat -gcutil pid來獲取分代年齡的使用情況,顯示為占比,如下,表頭參考上面

<a name="Dh6RS"></a>
jstat -gccapacity PID
-
-gccapacity命令主要用來分析堆內存,用法參考上面,如下效果,表頭含義參看上面

<a name="5hQ98"></a>
其他一些命令參數(shù)
-
jstat -gcnew PID: 年輕代GC分析,其中TT和MTT可以看到對象在年齡代存活的年齡和存活的最大年齡

-
jstat -gcnewcapacity PID: 年輕代內存分析

-
jstat -gcold PID: 老年代GC分析

-
jstat -gcoldcapacity: 老年代內存分析

-
jstat -gcmetacapacity PID: 元數(shù)據(jù)內存分析
<a name="mP8cH"></a>
jstat -class PID
- 統(tǒng)計進程中加載的類的數(shù)量,如下:

- 說明:
Loaded:加載class的數(shù)量
Bytes:所占用空間大小
Unloaded:未加載數(shù)量
Bytes:未加載占用空間
Time:時間
<a name="FpFCV"></a>
jstat -compiler PID
- 編譯信息的統(tǒng)計命令, 如下命令
jstat -class 15372

- 說明:
Compiled:編譯數(shù)量。
Failed:失敗數(shù)量
Invalid:不可用數(shù)量
Time:時間
FailedType:失敗類型
FailedMethod:失敗的方法
<a name="DbXrJ"></a>
jstat -printcompilation PID
-
JVM編譯方法的統(tǒng)計,如下命令jstat -printcompilation 15372

- 說明:
Compiled:最近編譯方法的數(shù)量
Size:最近編譯方法的字節(jié)碼數(shù)量
Type:最近編譯方法的編譯類型。
Method:方法名標識。
好了今天就說到這里,
jstat死一個非常還用的工具,需要平時多使用多分析才能真真掌握,下次我們接著說相關的工具的使用~????????
本文由AnonyStar 發(fā)布,可轉載但需聲明原文出處。
更多文章關注筆者博客 :云棲簡碼 i-code.online