使用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关键词。即可找到:
参考: