Java經常使用監控工具

Java經常使用監控工具
  • jps:虛擬機進程情況工具
    • 展現虛擬機進程ID及其執行的主類名稱(常常用到)
    • 格式:jps [options] [hostid]
    • 樣例:jps -ml
    • 可用選項
      • -q 只輸出虛擬機進程ID
      • -m 輸出虛擬機進程啓動時傳遞給主類main()函數的參數
      • -l 輸出主類的全名,若是進程執行的是jar包,輸出jar路徑
      • -v 輸出虛擬機進程啓動時JVM參數
  • jstat:虛擬機統計信息監視工具
    • 監視虛擬機各類運行狀態信息,顯示本地或者遠程虛擬機進程中的類裝載、內存、垃圾收集、JIT編譯等運行數據。
    • 格式:jstat [ option vmid [interval[s|ms] [count]] ]
      • 解釋:本地虛擬機進程,vmid就是本地系統的進程ID。若是是遠程虛擬機進程,vmid格式爲:[protocol:][//]vmid[@hostname[:port]/servername]
    • 樣例:jstat -gc 2764 250 20
    • 可用選項
      • -class 監視類裝載、卸載數量、總空間以及類裝載所耗費的時間
      • -gc 監視Java堆情況,包括Eden區、兩個survivor區、老年代、永久代等的容量、已用空間、GC時間合計等信息。
      • -gccapacity 監視內容與-gc基本相同,但輸出主要關注Java堆各個區域使用到的最大、最小空間。
      • -gcutil 監視內容與-gc基本相同,但輸出主要關注已使用空間佔總空間的百分比。
      • -gccause 監視內容與-gcutil功能同樣,可是會額外輸出致使上一次GC產生的緣由。
      • -gcnew 監視新生代GC情況。
      • -gcnewcapacity 監視內容與-gcnew基本相同,輸出主要關注使用到的最大、最小空間。
      • -gcold 監視老年代GC情況。
      • -gcoldcapacity 監視內容與-gcold基本相同,輸出主要關注使用到的最大、最小空間。
      • -gcmetacapacity 監視元數據區空間使用狀況。
      • -compiler 輸出JIT編譯器編譯過的方法、耗時等信息。
      • -printcompilation 輸出已經被JIT編譯的方法。
      • 其餘選項,可經過jstat -options命令查看相應jdk版本的選項
    • jstat -gc 30140 1000 20:垃圾回收統計(詳細)
      S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
      12288.0 13824.0 12276.3  0.0   193536.0 66873.3   57344.0    12780.8   33152.0 32327.6 4224.0 4079.4      8    0.087   1      0.045    0.132
      • 如下容量單位爲字節
      • S0C:年輕代中第一個survivor的容量
      • S1C:年輕代中第二個survivor的容量
      • S0U:年輕代中第一個survivor目前已使用的空間
      • S1U:年輕的中第二個survivor目前已使用的空間
      • EC:年輕代中Eden的容量
      • EU:年輕代中Eden目前已使用的容量
      • OC:老年代的容量
      • OU:老年代目前已使用的容量
      • MC:方法區容量
      • MU:方法區目前已使用的容量
      • CCSC:壓縮類空間容量
      • CCSU:壓縮類空間目前已使用的容量
      • YGC:年輕代垃圾回收次數
      • YGCT:年輕代垃圾回收消耗時間
      • FGC:Full GC次數
      • FGCT:Full GC消耗時間
      • GCT:垃圾回收消耗總時間
    • jstat -gccapacity 30140 1000 20:堆內存統計
      NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC       MCMN     MCMX      MC     CCSMN    CCSMX     CCSC    YGC    FGC
      
       43520.0 690688.0 246272.0 12288.0 13824.0 193536.0    87552.0  1381888.0    57344.0    57344.0      0.0 1079296.0  33152.0      0.0 1048576.0   4224.0      8    1
      • NGCMN:新生代最小容量
      • NGCMX:新生代最大容量
      • NGC:新生代目前容量
      • S0C:年輕代中第一個survivor的容量
      • S1C:年輕代中第二個survivor的容量
      • EC:年輕代中Eden的容量
      • OGCMN:老年代最小容量
      • OGCMX:老年代最大容量
      • OGC:老年代目前容量
      • OC:老年代目前容量
      • MCMN:元數據空間最小容量
      • MCMX:元數據空間最大容量
      • MC:目前元數據空間大小
      • CCSMN:壓縮類空間最小容量
      • CCSMX:壓縮類空間最大容量
      • CCSC:壓縮類空間目前容量
      • YGC:年輕代gc次數
      • FGC:Full gc次數
    • jstat -gcnew 30140 1000 20:新生代垃圾回收統計
      S0C    S1C    S0U    S1U   TT MTT  DSS      EC       EU     YGC     YGCT
      12288.0 13824.0 12276.3    0.0  3  15 13824.0 193536.0  66873.3      8    0.087
      • S0C:年輕代中第一個survivor的容量
      • S1C:年輕代中第二個survivor的容量
      • S0U:年輕代中第一個survivor目前已使用的容量
      • S1U:年輕代中第二個survivor目前已使用的容量
      • TT:對象在新生代存活的次數
      • MTT:對象在新生代存活的最大次數
      • DSS:指望的倖存區容量
      • EC:年輕代中Eden的容量
      • EU:年輕代中Eden目前已使用的容量
      • YGC:年輕代gc次數
      • YGCT:年輕代gc消耗時間
    • jstat -gcnewcapacity 30140 1000 20:新生代內存統計
      NGCMN      NGCMX       NGC      S0CMX     S0C     S1CMX     S1C       ECMX        EC      YGC   FGC
       43520.0   690688.0   246272.0 229888.0  12288.0 229888.0  13824.0   689664.0   193536.0     8     1
      • NGCMN:新生代最小容量
      • NGCMX:新生代最大容量
      • NGC:新生代目前容量
      • S0CMX:年輕代中第一個survivor最大容量
      • S0C:年輕代中第一個survivor的容量
      • S1CMX:年輕代中第二個survivor最大容量
      • S1C:年輕代中第二個survivor的容量
      • ECMX:年輕代中Eden的最大容量
      • EC:年輕代中Eden的容量
      • YGC:年輕代gc次數
      • FGC:Full gc次數
    • jstat -gcold 30140 1000 20:老年代垃圾回收統計
      MC       MU      CCSC     CCSU       OC          OU       YGC    FGC    FGCT     GCT
       33152.0  32327.6   4224.0   4079.4     57344.0     12780.8      8     1    0.045    0.132
      • MC:方法區容量
      • MU:方法區目前已使用的容量
      • CCSC:壓縮類空間容量
      • CCSU:壓縮類空間目前已使用的容量
      • OC:老年代的容量
      • OU:老年代目前已使用的容量
      • YGC:年輕代gc次數
      • FGC:Full gc次數
      • FGCT:Full GC消耗時間
      • GCT:垃圾回收消耗總時間
    • jstat -gcoldcapacity 30140 1000 20:老年代內存統計
      OGCMN       OGCMX        OGC         OC       YGC   FGC    FGCT     GCT
      87552.0   1381888.0     57344.0     57344.0     8     1    0.045    0.132
      • OGCMN:老年代最小容量
      • OGCMX:老年代最大容量
      • OGC:老年代目前容量
      • OC:老年代目前容量
      • YGC:年輕代gc次數
      • FGC:Full gc次數
      • FGCT:Full GC消耗時間
      • GCT:垃圾回收消耗總時間
    • jstat -gcmetacapacity 30140 1000 20:元數據空間統計
      MCMN       MCMX        MC       CCSMN      CCSMX       CCSC     YGC   FGC    FGCT     GCT
       0.0  1079296.0    33152.0        0.0  1048576.0     4224.0     8     1    0.045    0.132
      • MCMN:元數據空間最小容量
      • MCMX:元數據空間最大容量
      • MC:目前元數據空間大小
      • CCSMN:壓縮類空間最小容量
      • CCSMX:壓縮類空間最大容量
      • CCSC:壓縮類空間目前容量
      • YGC:年輕代gc次數
      • FGC:Full gc次數
      • FGCT:Full GC消耗時間
      • GCT:垃圾回收消耗總時間
    • jstat -gcutil 30140 1000 20:垃圾回收統計(彙總)
      S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
      99.91   0.00  34.55  22.29  97.51  96.58      8    0.087     1    0.045    0.132
      • S0:年輕代中第一個survivor區當前使用比例
      • S1:年輕代中第二個survivor區當前使用比例
      • E:年輕代中Eden使用比例
      • O:老年代使用比例
      • M:元數據區使用比例
      • CCS:壓縮類區使用比例
      • YGC:年輕代gc次數
      • YGCT:年輕代gc消耗時間
      • FGC:Full gc次數
      • FGCT:Full GC消耗時間
      • GCT:垃圾回收消耗總時間
  • jstack:Java堆棧跟蹤工具(經常使用)
    • 用於生成虛擬機當前時刻的線程快照。生成線程快照的目的是定位線程出現長時間停頓的緣由,如線程間死鎖、死循環、請求外部資源致使的長時間等待等都是致使線程長時間停頓的緣由。
    • 格式:jstack [options] vmid
    • 可用選項
      • -F 當正常輸出的請求不被響應時,強制輸出線程堆棧
      • -l 除堆棧外,顯示關於鎖的附加信息
      • -m 若是調用到本地方法的話,能夠顯示C/C++的堆棧
  • jinfo:Java配置信息工具
    • 實時查看和調整虛擬機各項參數
    • 格式:jinfo [options] pid
    • 具體選項可以使用名jinfo -options查看
  • jmap:Java內存映像工具
    • 用於生成堆轉儲快照
    • 格式:jmap [options] vmid
    • 可用選項
      • -dump 生成Jva堆轉儲快照。格式:-dump:[live, ]format=b,file=<filename>,其中live子參數說明是否只dump出存活的對象。
      • -finalizerinfo 顯示在F-Queue中等待Finalizer線程執行finalize方法的對象。
      • -heap 只顯示Java堆詳細信息,如使用哪一種回收器、參數配置、分代情況等。
      • -histo 顯示堆中對象統計信息,包括類、實例數量、合計容量。
      • -F 當虛擬機進程對-dump選項沒有響應時,可以使用這個選項強制生成dump快照。
  • jhat:虛擬機堆轉儲快照分析工具(儘可能不用,推薦Eclipse Memory Analyzer工具)
    • 與jmap搭配使用,來分析jmap生成的堆傳儲快照。
  • JConsole:Java監視與管理控制檯
    • 內存監控
    • 線程監控
    • 啓動命令:jconsole
  • VisualVM:多合一故障處理工具
    • 啓動命令:jvisualvm
相關文章
相關標籤/搜索