1. 程式人生 > 其它 >Java - 四種引用型別及應用場景

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);
    }
}

應用場景:物件銷燬前的一些操作,比如說資源釋放等。