首页 > 代码库 > java虚拟机之回收方法区
java虚拟机之回收方法区
在java虚拟机中并没有规范规定需要对方法区即是新生代进行垃圾回收,
主要是这些区域的回收性价比极低,
一般在新生代中一般垃圾回收中可以达到70%到95%。
其中永久代中的垃圾回收主要回收的是两个部分,
一个部分是废弃的常量,判断一个常量是否废弃,
主要看这个常量在其他地方是否引用了这个字面量。
否则如果此时发生垃圾回收,即会回收这部分常量。
另外一部分是无用的类,判断一个类是否无用,主要看三点,
第一点是这个类的所有实例都被回收了,即是java堆中不存在该类的任何实例,
第二点是加载该类的classloader已经被回收,
第三点是该类对应的java.lang.class对象没有在任何地方被引用,无法在任何地方通过反射访问该类。
在大量使用类反射,动态代理,CGlib等bytecode框架的使用场景中,
以及动态生成jsp这类频繁调用classloader的场景都需要虚拟机具备类卸载的功能,否则会导致永久代泄漏。
java虚拟机之回收方法区
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。