Java中的三大引用——强引用,软引用,弱引用

一、硬引用

一般的引用都是硬引用,比如下面的例子,new Object()被object和obj硬引用,这就是硬引用,垃圾回收后被硬引用的对象不会被删除:

public class Main {

    public static void main(String[] args) {
        Object object=new Object();
        Object obj=object;
    }

}

二、软引用

软引用的对象是SoftReference,用法如下,则new Object()就被softReference软引用了,软引用的特点是:当内充充足时,被软引用的对象不会被垃圾回收;当内存不足的时候,被软引用的对象会被垃圾回收。下面的例子为内充充足时不会被回收:

public class Main {

    public static void main(String[] args) {

        SoftReference<Object> softReference=new SoftReference<>(new Object());

        System.gc();

        System.out.println(softReference.get());

    }
}

运行结果:

java.lang.Object@154617c

三、弱引用

弱引用对象是WeakReference,用法和软引用相同,weakReference为对象new Object()的弱引用,弱引用的特点是:不论内充是否充足,弱引用对象都会被垃圾回收。下面则是这样的例子:

public class Main {

    public static void main(String[] args) {

       WeakReference<Object> weakReference=new WeakReference<>(new Object());

        System.gc();

        System.out.println(weakReference.get());

    }
}

运行结果:

null

需要注意的一点是常量池不会被垃圾回收:

public class Main {

    public static void main(String[] args) {

       WeakReference<Object> weakReference=new WeakReference<>("Love");

        System.gc();

        System.out.println(weakReference.get());

    }
}

Love

猜你喜欢

转载自blog.csdn.net/lovecaicaiforever/article/details/82532930