一、命令行工具
1. jps (Java Process Status)
作用:列出當前系統中所有的 Java 進程
常用命令:jps -l # 顯示進程ID和主類全名 jps -v # 顯示JVM啟動參數
輸出示例:
1234 com.example.MainApp 5678 org.apache.catalina.startup.Bootstrap
2. jstat (JVM Statistics Monitoring Tool)
作用:實時監控 JVM 運行狀態(GC、類加載、JIT編譯等)
核心功能:???jstat -gcutil <pid> 1000 5 # 每1秒打印1次GC統計,共5次
關鍵指標:
S0/S1
:Survivor 區使用率
E
:Eden 區使用率
O
:Old 區使用率
YGC/YGCT
:Young GC 次數/耗時
FGC/FGCT
:Full GC 次數/耗時
3. jinfo (Configuration Info for Java)
作用:查看和動態修改 JVM 參數
常用命令:jinfo -flags <pid> # 查看所有JVM參數 jinfo -flag MaxHeapSize <pid> # 查看特定參數 jinfo -flag +PrintGC <pid> # 動態啟用PrintGC
4. jmap (Memory Map for Java)
作用:生成堆內存快照和內存統計
核心功能:典型場景:內存泄漏分析、對象分布統計
5. jhat (JVM Heap Analysis Tool)
作用:分析 jmap 生成的堆轉儲文件
使用流程:
生成堆轉儲:
jmap -dump:file=heap.bin <pid>
啟動分析服務:
jhat heap.bin
瀏覽器訪問:
http://localhost:7000/
功能:對象查詢、引用鏈分析、內存泄漏檢測
6. jstack (Stack Trace for Java)
作用:生成線程快照(thread dump)
關鍵命令:jstack -l <pid> > thread.txt # 生成線程快照并保存
診斷場景:
死鎖檢測(查找
deadlock
關鍵詞)線程阻塞分析
CPU 飆高問題定位
二、圖形化監控工具
???jvisualvm.exe
是 JDK 自帶的圖形化監控診斷工具,與你jps
/jstack
/jmap
等屬于同一套工具鏈,但提供可視化操作界面。以下是關鍵解析:
一、典型使用場景
1. 快速定位內存泄漏
步驟:
在進程列表中選擇應用
點擊 “堆 Dump” 生成快照
分析 “類” 標簽頁 → 按實例數/大小排序 → 定位可疑對象
2. 診斷 CPU 飆高
步驟:
打開 “抽樣器” → 點擊 CPU 按鈕
查看 “熱點方法” 排名
結合 線程快照 分析阻塞棧
3. 分析死鎖
步驟:
打開 “線程” 標簽頁
點擊 “檢測死鎖” → 自動標記死鎖線程
二、與命令行工具對比
需求 推薦工具 原因 快速檢查進程狀態 jps
一條命令即完成 腳本自動化監控 jstat
適合集成到運維系統 深度分析內存泄漏 jvisualvm 可視化引用鏈,效率提升 10 倍+ 生產環境緊急診斷 jcmd
+jstack
輕量級,避免圖形界面資源消耗 長期性能趨勢分析 jvisualvm 支持保存快照對比歷史數據
三、注意事項
版本兼容性:
JDK 8 及之前:內置
jvisualvm
JDK 9+:需單獨下載(從 JDK 分離為獨立項目)