使用 HSDB 调试 HotSpot
环境说明:
- OS:Windows 10
- JDK:Oracle JDK 1.8.0_144
使用以下代码进行测试:
1 | /** |
1 | public class Main { |
前置条件
首先需要确保环境变量 JAVA_HOME、PATH 和 CLASSPATH 配置成功。
编译代码
启动 jdb
我们在使用 IDE 时,可以很方便地在代码中打上断点进行调试,如果不依赖 IDE,我们可以使用 Oracle JDK 自带的 jdb
工具来完成这项任务。
启动 jdb
时,设定 java 程序使用 Serial GC
和 10MB 的堆内存。
使用 stop in
命令在指定的 java 方法入口处设置断点。
使用 run
命令指定主类来启动 Java 程序。
使用 next
、step
等命令来控制前进。
使用 jps 查看进程 id
另起一个终端。
启动 HSDB
1 | java -cp ".;%JAVA_HOME%/lib/sa-jdi.jar" sun.jvm.hotspot.HSDB |
这时就会启动 HSDB 了。
输入 Main 程序的进程 id。
这里是线程信息。
选中主线程,然后选择 Stack Memory
一栏,会显示 main 线程的栈信息。