Sun JDK監控和故障處理工具
名稱 | 主要作用 |
---|---|
jps | JVM Process Status Tool,.顯示指定系統內所有的 HotSpot 虛擬機進程 |
jstat | JVM Statistics Monitoring Tool,用於收集 HotSpot虛擬機各方面的運行數據 |
jmap | Memory Map for Java,生成虛擬機的內存轉儲快照( heapdump文件) |
jstack | Stack Trace for Java,顯示虛擬機的線程快照 |
jps工具主要選項
使用: jps [options]
選項[options] | 作用 |
---|---|
-q | 只輸出 LVMID,省略主類的名稱 |
-m | 輸出虛擬機進程啓動時傳遞給主類 main()函數的參數 |
-l | 輸出主類的全名,如果進程執行的是Jar包,輸出Jar路徑 |
-v | 輸出虛擬機進程啓動時JVM參數 |
舉例
[vm@dpa-01 vm]$ jps -v
121 Jps -Dapplication.home=/usr/java/jdk1.8.0_191-amd64 -Xms8m
12 TEST -DappName=APP1 -Xms1024m -Xmx1024m -Xmn256m -Xss128k -XX:+DisableExplicitGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:../runtime_log/gc.log -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8
jstat 虛擬機統計信息監視工具
jstat命令格式爲:
jstat [option vmid] [interval[s|ms]] [count]
jstat [-命令選項 vmid] [間隔時間/毫秒] [查詢次數]
舉例說明
jstat -gc 12
jstat -gc 12 1s
jstat -gc 12 1000 10
jstat工具主要選項
選項[options] | 作用 |
---|---|
-class | 監視類裝載、卸載數量、總空間以及類裝載所耗費的時間 |
-gc | 監視Java堆狀況,包括Eden區、兩個 survivor區、老年代、永久代等的容量、已用空間、GC時間合計等信息 |
-gccapacity | 監視內容與-gc基本相同,但輸出主要關注Java堆各個區域使用到的最大、最小空間 |
-gcutil | 監視內容與-gc基本相同,但輸出主要關注已使用空間佔總空間的百分比 |
-gccause | 與 -gcutil功能一樣,但是會額外輸出導致上一次GC產生的原因 |
-gcnew | 監視新生代GC狀況 |
-gcnewcapacity | 監視內容與- gcnew基本相同,輸出主要關注使用到的最大、最小空間 |
-gcold | 監視老年代GC狀況 |
-gcoldcapacity | 監視內容與- gcold基本相同,輸出主要關注使用到的最大、最小空間 |
-gcpermcapacity | 輸出永久代使用到的最大、最小空間 |
-compiler | 輸出JT編譯器編譯過的方法、耗時等信息 |
-printcompilation | 輸出已經被JT編譯的方法 |
常用options舉例
-gc
[vm@dpa-01 vm]$ jstat -gc 12
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
0.0 1024.0 0.0 1024.0 274432.0 147456.0 773120.0 19968.0 44624.0 43551.0 5456.0 5199.5 19 0.656 0 0.000 0.656
- S0C:第一個Survivor區的大小
- S1C:第二個Survivor區的大小
- S0U:第一個Survivor的使用大小
- S1U:第二個Survivor的使用大小
- EC:新生代的大小
- EU:新生代的使用大小
- OC:老年代大小
- OU:老年代使用大小
- MC:方法區大小
- MU:方法區使用大小
- CCSC:壓縮類空間大小
- CCSU:壓縮類空間使用大小
- YGC:新生代垃圾回收次數
- YGCT:新生代垃圾回收消耗時間
- FGC:老年代垃圾回收次數
- FGCT:老年代垃圾回收消耗時間
- GCT:垃圾回收消耗總時間
-gccapacity
[vm@dpa-01 vm]$ jstat -gccapacity 12
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC
0.0 1048576.0 275456.0 0.0 1024.0 274432.0 0.0 1048576.0 773120.0 773120.0 0.0 1089536.0 44624.0 0.0 1048576.0 5456.0 19 0
- NGCMN:新生代最小容量
- NGCMX:新生代最大容量
- NGC:當前新生代容量
- S0C:第一個Survivor大小
- S1C:第二個Survivor大小
- EC:新生代的大小
- OGCMN:老年代最小容量
- OGCMX:老年代最大容量
- OGC:當前老年代大小
- OC:當前老年代大小
- MCMN:最小元數據容量
- MCMX:最大元數據容量
- MC:當前元數據空間大小
- CCSMN:最小壓縮類空間大小
- CCSMX:最大壓縮類空間大小
- CCSC:當前壓縮類空間大小
- YGC:年輕代gc次數
- FGC:老年代GC次數
-gcutil
[vm@dpa-01 vm]$ jstat -gcutil 12
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 100.00 83.21 2.58 97.60 95.30 19 0.656 0 0.000 0.65
- S0:第一個Survivor區當前使用比例
- S1:第二個Survivor區當前使用比例
- E:新生代使用比例
- O:老年代使用比例
- M:元數據區使用比例
- CCS:壓縮使用比例
- YGC:年輕代垃圾回收次數
- FGC:老年代垃圾回收次數
- FGCT:老年代垃圾回收消耗時間
- GCT:垃圾回收消耗總時間
jmap:Java內存映像工具
jmap命令格式
jmap [option] vmid
選項[options] | 作用 |
---|---|
-dump | 生成Java堆轉儲快照,格式爲:-dump:[live,]format=b,file=<filename,其中live子參數說明是否只dump出存活的對象 |
-finalizerinfo | 顯示在F-Queue中等待Finalizer線程執行finalize方法的對象。只在linux/Solaris平臺有效 |
-heap | 顯示Java堆詳細信息,如使用那種回收器、參數配置、分代狀況等。只在Linux/Solaris平臺下有效 |
-histo | 顯示堆中對象統計信息,包括類、實例數量、合計容量 |
-permstat | 以ClassLoader爲統計口徑顯示永久代內存狀態。只在linux/Solaris平臺下有效 |
-F | 當虛擬機進程對-dump選項沒有響應時,可使用這個選項強制生成dump快照。只在Linux/Solaris平臺下有效 |
常用options舉例
[vm@dpa-01 vm]$ jmap -dump:format=b,file=test.bin 12
Dumping heap to /opt/demo/vm/test.bin ...
Heap dump file created
生成test.bin文件,在eclipse memory analyzer使用分析
jstack:Java堆棧跟蹤工具
jstack命令格式
jstack [option] vmid
選項[options] | 作用 |
---|---|
-F | 當正常輸出的請求不被響應時,強制輸出線程堆棧 |
-l | 除堆棧外,顯示關於鎖的附加信息 |
-m | 如果調用到本地方法的話,可以顯示CC+的堆棧 |