使用JVM工具:HSDB查看动态代理生成的代理类

利用JVM工具:HSDB查看动态代理类对象的实现:既可以看jdk生成的动态代理对象,也可以查看cglib生成的动态代理对象。

1. 获取PID

  • 断点,运行项目获取
    在获取动态代理类处设置断点,使用jps获取PID,我的PID为:3755

 2. 执行命令,获取HSDB(HostSpot Debugger)工具:

java -classpath "%JAVA_HOME%/lib/sa-jdi.jar" sun.jvm.hotspot.HSDB

说明:执行上面语句可能报如下错误:

错误: 找不到或无法加载主类 sun.jvm.hotspot.HSDB

这个时候,请找到sa-jdi.jar的文件路径,使用全路径执行,比如我执行权路径的语句为:

java -classpath "/Library/Java/JavaVirtualMachines/jdk1.8.0_321.jdk/Contents/Home/lib/sa-jdi.jar" sun.jvm.hotspot.HSDB

3. 将PID填入HSDB工具

 

4.获取代理对象

查看代理对象地址,可以看到此处为$Proxy228@24671,取@前面的值:$Proxy228

 

使用HSDB搜索此对象:

 

 5. 生成代理对象

 6.查看生成的代理对象

生成的对象一般位于项目的classpath路径下,实在找不到,全磁盘搜索Proxy关键词。即可找到:

 

 

 

参考:

填坑之动态代理生成的代理类文件在哪?_Genterator的博客-CSDN博客_动态代理生成的类在哪里

找不到或无法加载主类 sun.jvm.hotspot.HSDB_普通网友的博客-CSDN博客