首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 開發中使用 JVisualVM 進行性能分析

     編輯:Java 相關知識

JVisualVM 簡介

JVisualVM 是 JDK 內建的可視化性能分析工具,整合了 jmap、jstack、jstat 等命令列工具,提供 CPU、記憶體、線程、類加載等實時監控與快照分析功能,是排查 Java 應用性能瓶頸的利器。

啟動與連接

  • 在 JDK bin 目錄下執行 jvisualvm.exe(Windows)或 jvisualvm(Linux/Mac)。
  • 左側「應用程式」面板會自動列出本機運行的 Java 進程;雙擊即可連接。
  • 遠程連接需在目標機器啟動 JMX(如 -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false),然後在 JVisualVM 中「添加 JMX 連接」。

核心功能頁籤

概覽

顯示進程基本信息、JVM 參數、系統屬性、命令行參數等。

監視

實時圖表展示:

  • CPU:用戶/系統佔比,定位高 CPU 線程。
  • 記憶體:堆/非堆使用量、GC 次數與耗時,觀察內存洩漏趨勢。
  • 類:已加載/卸載類數量,排查類加載洩漏。
  • 線程:活動/守護線程數,點擊「線程 Dump」獲取快照分析死鎖、阻塞。

線程

列出所有線程狀態(運行、休眠、等待、阻塞),支持按 CPU 使用率排序,快速定位熱點線程。右鍵可導出 Thread Dump 文本分析。

取樣器 / 分析器

  • 取樣器:低開銷周期性採樣 CPU 時間、記憶體分配,適合生產環境快速定位熱點方法、大對象分配。
  • 分析器:插桿式完整記錄方法調用次數、耗時、內存分配,開銷較大,建議測試環境使用。

Heap Dump

點擊「堆 Dump」獲取當前堆快照,可用於:

  • 分析對象保留路徑(GC Roots),定位內存洩漏。
  • 統計類實例數量、大小,發現異常佔用內存的對象。
  • 導出 .hprof 文件,配合 Eclipse MAT 深度分析。

實戰排查場景

  1. 高 CPU:監視頁籤確認 CPU 飆升 → 線程頁籤按 CPU 排序 → 取樣器 CPU 取樣 → 定位熱點方法優化算法或減少鎖競爭。
  2. OOM / 內存洩漏:監視觀察堆持續增長 → Heap Dump → 按保留大小排序 → 找出未釋放的集合、緩存、靜態引用 → 代碼修復。
  3. 響應慢:取樣器 CPU/內存取樣 → 找出耗時方法 → 檢查數據庫查詢、外部調用、鎖等待。
  4. 死鎖:線程頁籤 → 點擊「線程 Dump」→ 查看「Found one Java-level deadlock」提示 → 定位鎖順序問題。

最佳實踐建議

  • 生產環境優先使用「取樣器」,避免分析器影響性能。
  • 定期保存 Heap Dump 基線,對比異常時差異。
  • 結合 GC 日誌(-Xlog:gc*)綜合分析。
  • 遠程分析時注意網絡延遲與安全組配置。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved