一、HSDB介绍
HSDB(Hotspot Debugger),JDK自带的工具,用于查看JVM运行时的状态。位于JDK安装目录 …/jdk/lib/sa-jdi.jar 包中,是sa-jdi.jar包中的一个函数。
二、启动HSDB
- 使用cmd,并且切换到Jar所在目录,通过java -cp sa-jdi.jar sun.jvm.hotspot.HSDB命令启动HSDB插件
- 启动后会弹出如下窗口
三、使用HSDB
- 启动一个Java类, while (true)死循环是为了不让进程结束,能够查询到进程id
public class Test {
public static void main(String[] args) throws InterruptedException {
while (true) {
}
}
}
- 通过jsp -l查看进程id,这里看到进程id是5520
- 选择Attach to HotSpot process并把第2步获取的进程id 5520输入并点击OK。注:在点击OK时可能会发生一个问题。就是sawingbg.dll找不到的情况。它有可能被安装在了你的jdk文件夹内部的jre文件夹中。找到它并将其复制到指定文件夹中即可,具体请看最后报错解决方案
4. 输入进程id后会弹出Java Threads,是线程信息。点击Tools–>Class Brower,可以查看到当前内存中被加载的类情况。其中0x00000007c0060828代表上面编写的Test类的内存地址。
5. 点击Tools–> Inspector,输入0x00000007c0060828可以看到具体类的情况。
四、报错解决方案
报错解决方案,将JDK安装包下jre/bin目录下的sawingbg.dll复制到报错的Can’t load library:xxx这个目录下面。复制过后使用java -cp sa-jdi.jar sun.jvm.hotspot.HSDB命令重新启动。