Java強引用,軟引用,弱引用,虛引用

Java:對象的強、軟、弱和虛引用
引用:

        String str = new String("abc");
        //置空
        str = null;
  • 強引用:當我們new一個對象時就是創(chuàng)建了一個具有強引用的對象,如果一個對象具有強引用,垃圾回收器就絕不會回收它。Java虛擬機寧愿拋出OutOfMemoryError異常,使程序異常終止,也不會回收具有強引用的對象來解決內存不足的問題。
        //軟引用SoftReference
        SoftReference<String> softReference = new SoftReference<String>(str);
        // 手動清除
        softReference.clear();
  • 軟引用:如果一個對象只具有軟引用,當內存不夠時,會回收這些對象的內存,回收后如果還是沒有足夠的內存,就會拋出OutOfMemoryError異常。Java提供了SoftReference類來實現(xiàn)軟引用。
WeakReference<String> weakReference = new WeakReference<>(str);
System.gc();
  • 弱引用:弱引用比起軟引用具有更短的生命周期,垃圾收集器一旦發(fā)現(xiàn)了只具有弱引用的對象,不管當前內存是否夠用,都會回收它的內存。Java提供了WeakReference類來實現(xiàn)弱引用。
        //虛引用PhantomReference
        PhantomReference phantomReference = new PhantomReference<>(arg0, arg1);
  • 虛引用:虛引用并不會決定對象的生命周期,如果一個對象僅持有虛引用,這就和沒有任何引用一樣,在任何時候都可能被垃圾回收器回收,一個只具有虛引用的對象,被垃圾回收器回收時。會收到一個系統(tǒng)通知,這也是虛引用的主要作用。Java提供了PhantomReference類來實現(xiàn)虛引用。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容