java 动态代理类的卸载

tongqu 发布于 2016/09/26 21:10
阅读 271
收藏 0
1.动态代理生成的类,会被放到方法区吗,

2.它的卸载条件里包含"它的类加载器也要被卸载"这个条件吗

3.是不是需要考虑方法区(perm区)的内存溢出问题


加载中
0
大苹果G
大苹果G

1:生成的类,如果被加载会放到方法区。

2:类只能加载,不能卸载,卸载只能卸载类加载器。

3:正常情况下动态代理不用考虑永久区的溢出。

大苹果G
大苹果G
回复 @tongqu : 你还是没明白. 1.动态代理生成的类,是通过系统的类加载器加载的.所以你没法卸载.当然你自己实现自己的动态代理,不用系统的另算. 2.多线程大量创建动态代理,从类加载的过程中你也看到,每个类只会被加载一次,,所以最终结每个动态类只会被加载一次.
tongqu
tongqu
回复 @大苹果G : 第二点的那篇文章看了,这么说,自定义类加载器加载的类还是会被卸载的。 第三点的那篇文章,依然没说关于卸载的问题。 我的结论是,大量创建动态代理的时候要考虑永久代溢出的情况。所以代码设计的时候要注意,尤其是多线程情况下。 anyway,谢谢
大苹果G
大苹果G
回复 @tongqu : 第三点,请注意是在“正常状态”下。 http://rejoy.iteye.com/blog/1627405
大苹果G
大苹果G
回复 @tongqu : 类卸载机制 http://www.cnblogs.com/mengdd/p/3594608.html
tongqu
tongqu
第一点是正确的 第二点肯定是错的,类是可以被卸载的。条件比较苛刻而已 第三点也不对 可以参考深入理解jvm虚拟机
返回顶部
顶部