Sun JDK監控和故障處理工具

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+的堆棧
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章