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編譯統計)
1、jstat –class<pid> : 顯示加載class的數量,及所占空間等信息。
| 顯示列名 |
具體描述 |
| Loaded |
裝載的類的數量 |
| Bytes |
裝載類所占用的字節數 |
| Unloaded |
卸載類的數量 |
| Bytes |
卸載類的字節數 |
| Time |
裝載和卸載類所花費的時間 |
2、jstat -compiler <pid>顯示VM實時編譯的數量等信息。
| 顯示列名 |
具體描述 |
| Compiled |
編譯任務執行數量 |
| Failed |
編譯任務執行失敗數量 |
| Invalid |
編譯任務執行失效數量 |
| Time |
編譯任務消耗時間 |
| FailedType |
最后一個編譯失敗任務的類型 |
| FailedMethod |
最后一個編譯失敗任務所在的類及方法 |
3、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) |
4、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次數 |
5、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) |
6、jstat -gcnew <pid>:年輕代對象的信息。
| 顯示列名 |
具體描述 |
| S0C |
年輕代中第一個survivor(幸存區)的容量 (字節) |
| S1C |
年輕代中第二個survivor(幸存區)的容量 (字節) |
| S0U |
年輕代中第一個survivor(幸存區)目前已使用空間 (字節) |
| S1U |
年輕代中第二個survivor(幸存區)目前已使用空間 (字節) |
| TT |
持有次數限制 |
| MTT |
最大持有次數限制 |
| EC |
年輕代中Eden(伊甸園)的容量 (字節) |
| EU |
年輕代中Eden(伊甸園)目前已使用空間 (字節) |
| YGC |
從應用程序啟動到采樣時年輕代中gc次數 |
| YGCT |
從應用程序啟動到采樣時年輕代中gc所用時間(s) |
7、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次數 |
8、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) |
9、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) |
10、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) |
11、jstat -printcompilation <pid>:當前VM執行的信息。
| 顯示列名 |
具體描述 |
| Compiled |
編譯任務的數目 |
| Size |
方法生成的字節碼的大小 |
| Type |
編譯類型 |
| Method |
類名和方法名用來標識編譯的方法。類名使用/做為一個命名空間分隔符。方法名是給定類中的方法。上述格式是由-XX:+PrintComplation選項進行設置的 |
