首页 > 编程语言 > 详细

java虚拟机之回收方法区

时间:2016-09-26 21:27:30      阅读:245      评论:0      收藏:0      [点我收藏+]
在java虚拟机中并没有规范规定需要对方法区即是新生代进行垃圾回收,
主要是这些区域的回收性价比极低,
一般在新生代中一般垃圾回收中可以达到70%到95%。
 
其中永久代中的垃圾回收主要回收的是两个部分,
一个部分是废弃的常量,判断一个常量是否废弃,
主要看这个常量在其他地方是否引用了这个字面量。
否则如果此时发生垃圾回收,即会回收这部分常量。
 
另外一部分是无用的类,判断一个类是否无用,主要看三点,
第一点是这个类的所有实例都被回收了,即是java堆中不存在该类的任何实例,
第二点是加载该类的classloader已经被回收,
第三点是该类对应的java.lang.class对象没有在任何地方被引用,无法在任何地方通过反射访问该类。
 
在大量使用类反射,动态代理,CGlib等bytecode框架的使用场景中,
以及动态生成jsp这类频繁调用classloader的场景都需要虚拟机具备类卸载的功能,否则会导致永久代泄漏。

java虚拟机之回收方法区

原文:http://www.cnblogs.com/hytywjtechnology/p/5910567.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!