HSDB(HotSpot Debugger)是專為 HotSpot VM 設計的圖形化除錯工具,對應的命令列版本為 CLHSDB(Command Line HotSpot Debugger)。兩者皆基於 Serviceability Agent (SA) 實作,能在不中斷目標 JVM 的情況下,深度檢視堆、執行緒、類別、物件佈局等內部結構,是 JVM 效能調優與問題診斷的利器。
# 圖形介面 HSDB
java -cp .;%JAVA_HOME%/lib/sa-jdi.jar sun.jvm.hotspot.HSDB
# 命令列介面 CLHSDB
java -cp .;%JAVA_HOME%/lib/sa-jdi.jar sun.jvm.hotspot.CLHSDB
注意: 需以與目標 JVM 相同使用者/權限執行,且目標 JVM 需啟用 -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints 以獲得完整功能。
啟動 HSDB 後,選擇 File → Attach to HotSpot process,選取目標 PID 即可連接。

| 工具 | 用途 |
|---|---|
| Class Browser | 瀏覽已載入類別結構 |
| Code Viewer | 檢視 JIT 編譯後的機器碼 |
| Compute Reverse Ptrs | 計算反向指標(誰引用該物件) |
| Deadlock Detection | 死鎖偵測 |
| Find Object by Query | 使用 OQL (Object Query Language) 查詢物件 |
| Find Pointer | 搜尋指向特定位址的指標 |
| Find Value in Heap | 在堆中搜尋特定值 |
| Find Value in Code Cache | 在 Code Cache 中搜尋 |
| Heap Parameters | 檢視各代堆區位址範圍、大小 |
| Memory Viewer | 原始記憶體檢視器 |
| Monitor Cache Dump | 監視器快取資訊 |
| Object Histogram | 物件類型統計直方圖 |
| Show System Properties | 顯示系統屬性 |
| Show VM Version | 顯示 VM 版本資訊 |
| Show –XX flags | 顯示 VM 啟動參數 |

在 HSDB 中選 Windows → Console 或直接啟動 CLHSDB 進入命令列模式。
| 指令 | 說明 |
|---|---|
attach <pid> | <core> | 連接 Java 進程或 core dump 檔案 |
class <name> | 檢視類別詳細資訊 |
classes | 列出所有已載入類別 |
detach | 斷開連接 |
inspect <expr> | 檢視 OOP 物件結構 |
jstack [-v] | 印出所有執行緒堆疊(-v 顯示詳細) |
mem <addr> [len] | 檢視指定位址記憶體內容 |
print <expr> | 評估並印出運算式值 |
revptrs <addr> | 計算反向指標 |
scanoops <start> <end> [type] | 掃描指定位址範圍內的物件實例 |
thread {-a | <id>} | 檢視指定/所有執行緒資訊 |
threads | 列出所有執行緒摘要 |
universe | 顯示堆空間總覽 |
whatis <addr> | 查詢指定位址儲存的資料類型 |
quit | 退出 CLHSDB |
Object Histogram 或 OQL 查找可疑物件保留路徑Deadlock Detection 或 jstack 找出持有鎖的執行緒Code Viewer 檢視熱點方法編譯代碼Memory Viewer、Find Value in Heap 定位直接記憶體分配透過 HSDB/CLHSDB 可直觀理解 JVM 內部運作機制,是高階 Java 工程師必備的診斷技能。