Jstat是JDK自帶的一個輕量級小工具。全稱「Java Virtual Machine statistics monitoring tool」,它位於java的bin目錄下,主要利用JVM內建的指令對Java應用程序的資源和性能進行實時的命令行的監控,包括了對Heap size和垃圾回收情況的監控。可見,Jstat是輕量級的、專門針對JVM的工具,很是適用。java
jstat工具特別強大,有衆多的可選項,詳細查看堆內各個部分的使用量,以及加載類的數量。使用時,需加上查看進程的進程id,和所選參數。參考格式以下:工具
jstat -options 性能
能夠列出當前JVM版本支持的選項,常見的有命令行
l class (類加載器) 對象
l compiler (JIT) 進程
l gc (GC堆狀態) 內存
l gccapacity (各區大小) ci
l gccause (最近一次GC統計和緣由) 資源
l gcnew (新區統計)it
l gcnewcapacity (新區大小)
l gcold (老區統計)
l gcoldcapacity (老區大小)
l gcpermcapacity (永久區大小)
l gcutil (GC統計彙總)
l printcompilation (HotSpot編譯統計)
一、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選項進行設置的
Jstat是JDK自帶的一個輕量級小工具。全稱「Java Virtual Machine statistics monitoring tool」,它位於java的bin目錄下,主要利用JVM內建的指令對Java應用程序的資源和性能進行實時的命令行的監控,包括了對Heap size和垃圾回收情況的監控。可見,Jstat是輕量級的、專門針對JVM的工具,很是適用。jstat工具特別強大,有衆多的可選項,詳細查看堆內各個部分的使用量,以及加載類的數量。使用時,需加上查看進程的進程id,和所選參數。參考格式以下:jstat -options 能夠列出當前JVM版本支持的選項,常見的有l class (類加載器) l compiler (JIT) l gc (GC堆狀態) l gccapacity (各區大小) l gccause (最近一次GC統計和緣由) l gcnew (新區統計)l gcnewcapacity (新區大小)l gcold (老區統計)l gcoldcapacity (老區大小)l gcpermcapacity (永久區大小)l gcutil (GC統計彙總)l printcompilation (HotSpot編譯統計)一、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(持久代)的容量 (字節)PUPerm(持久代)目前已使用空間 (字節)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代的最大容量(字節)OGCold代當前新生成的容量 (字節)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選項進行設置的