码迷,mamicode.com
首页 > 其他好文 > 详细

JVM垃圾回收时的可触及性

时间:2017-05-30 19:29:40      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:interrupt   pac   protect   over   live   static   int   ide   ati   

可触及的
  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垃圾回收时的可触及性

标签:interrupt   pac   protect   over   live   static   int   ide   ati   

原文地址:http://www.cnblogs.com/413xiaol/p/6920818.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!