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目錄下。打開後選擇需要檢查的進程
- 概述頁
主要迅疾的概覽,包括“堆內存情況”、“線程”、“類”、“CPU使用情況” - 內存頁
相當於可視化的jstat命令,監視收集管理虛擬機內存的變化趨勢, 線程監控
相當於可視化的jstack命令,遇到線程停頓可以使用這個頁。VisualVM 多合一故障處理工具
是目前爲止隨JDK發佈的功能最強大的運行監控和故障處理程序