強引用 軟引用 弱引用 虛引用

weixin_34185560發表於2018-09-06

強引用

  • 通常用new出來的物件就是我們所謂的強引用

軟引用

  • 非必須引用,記憶體溢位之前進行回收。
    Object obj = new Object();
    SoftReference<Object> sf = new SoftReference<Object>(obj);
    obj = null;
    sf.get();//有時候會返回null

弱引用

  • 第二次垃圾回收時回收,弱引用主要用於監控物件是否已經被垃圾回收器標記為即將回收的垃圾,可以通過弱引用的isEnQueued方法返回物件是否被垃圾回收器標記。
    Object obj = new Object();
    WeakReference<Object> wf = new WeakReference<Object>(obj);
    obj = null;
    wf.get();//有時候會返回null

虛引用

  • 垃圾回收時回收,無法通過引用取到物件值,虛引用是每次垃圾回收的時候都會被回收,通過虛引用的get方法永遠獲取到的資料為null,因此也被成為幽靈引用。
    Object obj = new Object();
    PhantomReference<Object> pf = new PhantomReference<Object>(obj);
    obj=null;
    pf.get();//永遠返回null

相關文章