VisualVM 是 JDK 內建的全能監控分析工具,整合 jstat、JConsole、jstack、jmap、jinfo。本文從安裝啟動到生產級問題排查,構建完整實戰知識體系。
$JAVA_HOME/bin/jvisualvm.exe 直接運行。-J-XX:+PerfBypassFileSystemCheck。org.eclipse.swt.graphics.Image)。| 錯誤類型 | 原因 | 關鍵參數 | 調優策略 |
|---|---|---|---|
| PermGen Space / Metaspace | 類元數據過多(熱部署、大量 JAR) | -XX:PermSize / -XX:MaxPermSize (JDK7) -XX:MetaspaceSize / -XX:MaxMetaspaceSize (JDK8+) | 監控 Classes 曲線,設定穩定值上限+20% |
| Java Heap Space | 對象過多/大對象/洩漏 | -Xms -Xmx (建議等值) -Xmn / -XX:NewRatio | 觀察 Used Heap 鋸齒圖,無下降=洩漏;調大堆、優化代碼、檢查大對象分配 |
# 目標 JVM 啟動參數
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9090
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=目標服務器IP
VisualVM → Remote → Add → 輸入 IP:Port 連接。
VisualVM 是「瑞士軍刀」:監控、Dump、採樣、剖析一站式。養成「現象→數據→代碼→驗證」閉環,從救火隊長進化為性能架構師。