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运行时状态分析工具
 
3. 选择第一个 Attach to HotSpot process
 
4. 输入工程的进程 PID,可以打开资源管理器或 VisualVM 查看。VisualVM 在 JDK\bin 目录下,启动 jvisualvm 就可以啦
 
 
5. 选择第一个 Class Browser
 
 
6. 搜索委托类(被代理的类),比如我的是 Meal

 

7. 选择指定的 class 生成 .class 文件,比如CGLib 动态生成的子类是包含 $FastClassByCGLIB$ 的类

 

 
8. 生成 .class 文件,保存路径在 JDK\lib\包路径 目录下。

 

比如我的生成路径是

 

9. 用 idea 等反编译工具打开,idea 没装反编译插件的就自己下载吧

 

posted @   维维尼~  阅读(137)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示