前言
Java對象信息對開發者來說並不是透明的,需要借助工具來更好查詢對象的運行情況,這里我們帶來HSDB工具。
演示
打開工具過程
1. 工具是JDK自帶的:目錄:jdk1.8.0_191\lib\sa-jdi.jar。
2. 使用cmd,並且切換到Jar所在目錄:C:\Program Files\Java\jdk1.8.0_191\bin 。

3. 執行命令下面,會自動彈出一個界面。
java -cp sa-jdi.jar sun.jvm.hotspot.HSDB
界面如下:

4. 准備一個測試案例看看如何使用該工具
public class JvmTest { public static void main(String[] args) { while(true); } }
寫了一個死循環,把他運行起來,然后執行jps 命令。
jps -l -- 查詢進程的id

找到我們需要的進程號,將該進程號填入HSDB工具中。


點擊Ok后會出現報錯:

提示缺少sawingdbg.dll,該文件在jre/bin目錄下:

移動到jre1.8.0_191\bin文件所在的目錄下面,從新運行命令並且加入進程號就能看到如下界面。

5. 查看對象信息

點擊打開

我們要根據內存地址找到Java底層對應的對象

輸入內存地址並且點擊compute Liveness。

入門案例結束
擴展

選擇mian線程,查看線程堆棧。

獲取內存地址去查看JVM對應的對象信息。

查詢對象情況:


總結
HSDB工具能非常好讓我們學習JVM了解Java對象的結構。
