Java WeakReference 使用问题

给你个简单的例子

        Reference<Integer> r = new WeakReference<Integer>(new Integer(1));
        System.out.println(r);
        System.out.println(r.get());
        System.gc();
        System.out.println(r);
        System.out.println(r.get());

第二次输出的时候r.get()已经变成了null
WeakReference管理的对象在没有任何强引用指向的情况下在gc时会被回收 但需要注意的是如果有强引用指向 就不会

假设把上面的例子第一句改成
Integer i = new Integer(1);
Reference<Integer> r = new WeakReference<Integer>(i);
那么不论如何gc r.get()都会一直正确返回 因为i是个强引用

你可能感兴趣的:(java,Integer)