如何使用HSDB?
进入到jdk的lib文件夹下 ,打开cmd,执行命令 java -cp sa-jdi.jar sun.jvm.hotspot.HSDB,会打开一个HSDB的图形化界面。
跑一个不会停的项目,在idea终端使用jps命令找出端口号,1272就是我现在跑的项目
打开HSDB ,file-》attach ,输入1272端口号确认。
报错:Exception in thread "Thread-1" java.lang.UnsatisfiedLinkError: Can't load library: C:\Program Files\Java\jre1.8.0_20\bin\sawindbg.dll
sawindbg.dll这个文件出错,去网上下载一个对应的版本,64位找64位的,32位找32位的。替换这个文件,重新运行HSDB,attach成功。
我这里保存了一份资源上传到csdn了,win10 64位:sawindbg.dll下载。
attach该进程端口号,然后tools-》class brower ,找到运行的类的内存地址
找到该地址后,然后tools-》inspector ,将内存地址放上去回车,就可以看到该类在jvm中就是一个instanceKlass。
使用HSDB查看main方法里面的堆栈
根据操作查看main的堆栈情况