1 定義
HSDB ( Hotspot Debugger) 。 jdk自帶的 檢查調(diào)試java進(jìn)程的工具。
最近在深入學(xué)習(xí)jvm,會(huì)用到這個(gè)神器輔助學(xué)習(xí),所以記錄一下用法。
2 使用
我的是mac版本
2.1 啟動(dòng)
sudo java -cp /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/lib/sa-jdi.jar sun.jvm.hotspot.HSDB
這里一定要注意,如果你的機(jī)器有多個(gè)jdk,那你啟動(dòng)的jdi的版本,一定要與你要attach的java進(jìn)程的運(yùn)行環(huán)境的jdk版本一致,否則會(huì)遇到很多問(wèn)題。
啟動(dòng)完成以后是這個(gè)樣子:

image.png
2.2 attach一個(gè)java進(jìn)程
用main方法,啟動(dòng)了一個(gè)java進(jìn)程,并一直等待錄入:
public static void main(String[] args) throws IOException {
String zhTest="zenghong test";
System.in.read();
}
使用jps查看java進(jìn)程號(hào)是 23372
zenghong@MacBook-Pro:~$ jps
19601 RemoteMavenServer
23363 Launcher
99462
23372 HeartBeatCheckController
23486 Jps
782
attach進(jìn)程號(hào):

image.png

image.png
可以看到對(duì)應(yīng)線程

image.png
2.3 查看一個(gè)對(duì)象
Tools > Class Browser

image.png
拿到內(nèi)存地址: 0x00000007c0060828
Tools > Inspector

image.png
完結(jié)。