JDK 工具 HSDB 查看动态生成类

前置工作
1. 复制 JDK 安装目录\jre\bin\sawindbg.dll 到 JDK 安装目录同级的 jre\bin 目录下,否则会报错找不到 sawindbg.dll 文件。
比如我的 sawindbg.dll 文件在 D:\Program Files\Java\jdk1.8.0_301\jre\bin 目录下,需要复制到 D:\Program Files\Java\jre1.8.0_301\bin 目录下
 
2. 启动工程,需要注意的是,启动工程的 JVM 环境必须是安装的 JDK 环境,否则后续操作会报错 JVM 版本不一致。
比如我在 idea 中直接用 main 方法启动,此时操作就会报错,因为 idea 会使用默认的 OpenJDK 去运行这段代码。解决方法是,手动配置 JDK,或者在已经配置好的工程中运行。比如我的就是在配置好的 SpringBoot 的启动类中运行示例代码。
 
开始使用
1. 做完以上前置工作后,直接启动工程,注意不要让工程启动后短时间内就终止,因为程序终止后生成的 class 文件也会销毁,这里可以使用循环或者线程 sleep
 
2. win + r 打开 DOS 窗口,
输入命令 java -cp ".;%JAVA_HOME%/lib/sa-jdi.jar" sun.jvm.hotspot.HSDB
Enter 打开 HSDB 图形化界面
这个命令是启动 JDK /lib/sa-jdi.jar,HSDB 类是一个很强大的JVM运行时状态分析工具
JDK 工具 HSDB 查看动态生成类
 
3. 选择第一个 Attach to HotSpot process
JDK 工具 HSDB 查看动态生成类
 
4. 输入工程的进程 PID,可以打开资源管理器或 VisualVM 查看。VisualVM 在 JDK\bin 目录下,启动 jvisualvm 就可以啦
JDK 工具 HSDB 查看动态生成类
 
 
5. 选择第一个 Class Browser
JDK 工具 HSDB 查看动态生成类
 
 
6. 搜索委托类(被代理的类),比如我的是 Meal
JDK 工具 HSDB 查看动态生成类
7. 选择指定的 class 生成 .class 文件,比如CGLib 动态生成的子类是包含 $FastClassByCGLIB$ 的类
JDK 工具 HSDB 查看动态生成类
 
8. 生成 .class 文件,保存路径在 JDK\lib\包路径 目录下。
JDK 工具 HSDB 查看动态生成类
比如我的生成路径是
JDK 工具 HSDB 查看动态生成类
9. 用 idea 等反编译工具打开,idea 没装反编译插件的就自己下载吧
JDK 工具 HSDB 查看动态生成类
上一篇:JSBinding + SharpKit / 实战:转换 Stealth


下一篇:windows 消除文件名中的快捷方式