首页 > 代码库 > JVM垃圾回收时的可触及性
JVM垃圾回收时的可触及性
可触及的
1.从根节点可以触及到这个对象
可复活的
1.一旦所有引用被释放,就是可复活状态
2.因为在finalize()中可能复活该对象
不可触及的
1.在finalize()后,可能会进入不可触及状态
2.不可触及的对象不可能复活
3.可以回收
package vm; /** * Created by Administrator on 2017/5/30. */ public class CanReliveObj { public static CanReliveObj obj; @Override protected void finalize() throws Throwable { super.finalize(); System.out.println("CanReliveObj finalize called"); obj=this; } @Override public String toString(){ return "I am CanReliveObj"; } public static void main(String[] args) throws InterruptedException{ obj=new CanReliveObj(); obj=null; //可复活 System.gc(); Thread.sleep(1000); if(obj==null){ System.out.println("obj 是 null"); }else{ System.out.println("obj 可用"); } System.out.println("第二次gc"); obj=null; //不可复活 System.gc(); Thread.sleep(1000); if(obj==null){ System.out.println("obj 是 null"); }else{ System.out.println("obj 可用"); } } }
CanReliveObj finalize called
obj 可用
第二次gc
obj 是 null
JVM垃圾回收时的可触及性
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。