HSDB(Hotspot Debugger)
,是一款内置于 SA 中的 GUI 调试工具,可用于调试 JVM 运行时数据,从而进行故障排除
启动HSDB
检测不同 JDK 版本需要使用不同的 HSDB
版本,否则容易出现无法扫描到对象等莫名其妙的问题
Mac:JDK7 和 JDK8 均可以采用以下的方式
1
$ sudo java -cp ,:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/lib/sa-jdi.jar sun.jvm.hotspot.HSDB
事实上经过测试,即使通过 JDK8 自带的
sa-jdi.jar
去扫描对象(scanoops
)的时候也会发生扫不到的情况,但可以通过其他手段代替而 JDK11 的启动方式有些区别
1
$ /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/bin/jhsdb hsdb
事实上经过测试,该版本启动的
HSDB
会少支持一些指令(比如mem, whatis
),因此目前不推荐使用该版本Windows:
1
$ java -classpath "%JAVA_HOME%/lib/sa-jdi.jar" sun.jvm.hotspot.HSDB
其中启动版本可以使用 /usr/libexec/java_home -V
获取
若遇到 Unable to locate an executable at “/Users/xx/.jenv/versions/1.7/bin/jhsdb” (-1) 可通过
Jenv
切换到当前 Jdk 版本即可解决