深入理解JVM虛擬機 性能監控與故障處理工具

JDK監控和故障處理

名稱 描述
jps jvm process status tool,顯示指定系統內所有的hotspot虛擬機進程
jstat jvm statistics monitoring tool,用於收集hotspot虛擬機各方面的運行數據
jinfo configuration info for java,顯示虛擬機配置信息
jmap memory map for java,生成虛擬機的內存轉儲快照(heapdump文件)
jhat jvm heap dump browser,用於分析heapmap文件,它會建立一個http/html服務器讓用戶可以在瀏覽器上查看分析結果
jstack stack trace for java ,顯示虛擬機的線程快照
  • jps [options] [hostid]

jps,和Linux的ps命令類似,查詢的是虛擬機的進程。可以顯示執行主類、LVMID(本地虛擬機唯一ID)等。LVMID和系統的PID是一致的。

如 jps -q

符號 描述
-q 只輸出LVMID,省略主類名稱
-m 輸出虛擬機進程啓動時傳遞給main()函數的參數
-l 輸出主類全名,如果是jar輸出jar路徑
-v 輸出虛擬機進程啓動時JVM參數
  • jstat [ option vmid [interval [s|ms] [count] ] ]

jstat用於監視虛擬機各種運行狀態信息。可以顯示類裝載、內存、垃圾收集、JIT編譯等運行數據。對於本地虛擬機,VMID和LVMID是一樣的。如果是遠程的則VMID變成遠程的格式。interval和count表示查詢間隔和次數

如> jstat -gc 762 250 20

每250毫秒查詢一次垃圾收集,共20次

jstat工具主要選項

符號 描述
-class 監視類裝載、卸載數量、總空間及類裝載所耗費的時間
-gc 監視Java堆狀況,Eden區、2個survivor區、老年代、永久代等
-gccapacity 和-gc類似,主要關注各區域最大最小空間
-gcutil 和-gc類似,主要關注已使用空間的百分比
-gccause 和-gcutil一樣,會輸出上一次gc的原因
-gcnew 監視新生代GC狀況
-gcnewcapacity 和-gcnew類似,主要關注最大最小空間
-gcold 監視老年代GC狀況
-gcoldcapacity 同上
-gcpermcapacity 永久代的最大最小空間
-compiler 輸出JIT編譯器編譯過的方法,耗時等信息
-printcompilation 輸出已被JIT編譯的方法
  • jinfo [ option ] pid

jinfo能實時查看和調整虛擬機的各項參數。

查詢CMSInitiatingOccupancyFraction的參數
如> jinfo -flag CMSInitiatingOccupancyFraction 6632

  • jmap [ option ] vmid
    jmap用於生成轉儲快照(heapdump)、查詢堆和永久代詳細信息等。
符號 描述
-dump 生成heap文件。-dump:[live,]format-b,file= 其中live說明只dump出存活的對象
-finalizerinfo 顯示F-Queue中等待Finalizer線程執行finalize方法的對象(Linux/Solaris有效)
-heap 顯示堆詳細信息(Linux/Solaris有效)
-histo 顯示堆中對象統計信息,包括類、實例數量和合計容量
-permstat 顯示永久代內存狀態(Linux/Solaris有效)
-F -dump沒有響應時,可使用這個選項強制生成dump文件。(Linux/Solaris有效)

如> jmap -dump:format=b,file=dumpfile.log 6632

  • jhat <heapdumpfile>

jhat和jmap配合使用。來分析jmap生成的轉儲快照文件,內置了一個微型的HTTP服務器,供用戶在瀏覽器來訪問分析接口。
除了這個,還有VisualVM、Eclipse Memory Analyzer、IBM HeapAnalyzer等都能更專業的分析heap文件。

  • jstack [ option ] vmid

Java堆棧跟蹤工具。用於生成虛擬機當前時刻的線程快照(threaddump文件)。

符號 描述
-F 正常輸出請求不響應時,強制輸出線程堆棧
-l 除堆棧外,顯示關於鎖的附加信息
-m 調用本地方法的話,可以顯示C/C++堆棧

JConsole: java監視與管理控制檯

JConsole是一種基於JMX的可視化監控管理工具,在JDK/bin目錄下。打開後選擇需要檢查的進程
這裏寫圖片描述

  1. 概述頁
    主要迅疾的概覽,包括“堆內存情況”、“線程”、“類”、“CPU使用情況”
  2. 內存頁
    相當於可視化的jstat命令,監視收集管理虛擬機內存的變化趨勢,
  3. 線程監控
    相當於可視化的jstack命令,遇到線程停頓可以使用這個頁。

    VisualVM 多合一故障處理工具

    是目前爲止隨JDK發佈的功能最強大的運行監控和故障處理程序

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章