对java弱引用感到困惑

时间:2017-12-22 02:29:54

标签: java weak-references

class A {

}

public class Test {
public static void main(String[] args) throws Exception {
    ReferenceQueue<A> queue = new ReferenceQueue<>();  
    WeakReference<A> ref = new WeakReference<>(new A(), queue);  
    System.out.println("ref.get() == null:" + (ref.get() == null));

    Object obj = null;  
    obj = queue.poll();  
    System.out.println("obj == null:" + (obj == null));

    System.gc();  

    System.out.println("ref.get() == null2:" + (ref.get() == null));
    obj = queue.poll();  
    System.out.println("obj == null2:" + (obj == null));

    System.out.println(obj instanceof A);
}

}

结果是:

ref.get() == null:false
obj == null:true
ref.get() == null2:true
obj == null2:false
false

我的问题是:在gc之后obj究竟是什么?我以前认为是A对象,但结果显示不是。那个参考资料是否已被列入队列?如果为true,则何时清除引用或队列何时为空?

0 个答案:

没有答案
相关问题