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