Java - 四种引用类型及应用场景

1. 强引用

new 一个对象的时候,就是强引用

Object object = new Object();

只要强引用存在,垃圾回收就不会回收该对象,内存不足时会抛出OOM。

2. 软引用

定义:非必须,但仍有用的对象。内存不足时才会回收。

软引用的使用

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

应用场景:缓存

3. 弱引用

定义:不管内存状态如何,总会被回收的对象。

弱引用的使用

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

应用场景:Java源码中的java.util.WeakHashMap中的key就是使用弱引用。

4. 虚引用

定义:虚引用与没有引用关系一样,随时会被回收。

虚引用必须和引用队列一起使用

public class PhantomReference<T> extends Reference<T> {
    /**
     * Returns this reference object's referent.  Because the referent of a
     * phantom reference is always inaccessible, this method always returns
     * <code>null</code>.
     *
     * @return  <code>null</code>
     */
    public T get() {
        return null;
    }
    public PhantomReference(T referent, ReferenceQueue<? super T> q) {
        super(referent, q);
    }
}

应用场景:对象销毁前的一些操作,比如说资源释放等。

posted @ 2022-03-15 16:46  护发师兄  阅读(327)  评论(0编辑  收藏  举报