強引用,軟引用,弱引用,虛引用的總結

概念解釋

強引用

  • 強引用是使用最普遍的引用:Object o=new Object(); 特點:不會被GC
  • 將對象的引用顯示地置爲null:o=null; // 幫助垃圾收集器回收此對象
  • 舉例ArrayList的實現源代碼:
    這裏寫圖片描述

軟引用

  • 軟引用用來描述一些還有用但是並非必須的對象,在Java中用java.lang.ref.SoftReference類來表示。對於軟引用關聯着的對象,只有在內存不足的時候JVM纔會回收該對象。因此,這一點可以很好地用來解決OOM的問題,並且這個特性很適合用來實現緩存:比如網頁緩存、圖片緩存等。

    1、瀏覽器網頁緩存實例:
    這裏寫圖片描述
    2、軟引用可以和一個引用隊列(ReferenceQueue)聯合使用,如果軟引用所引用的對象被垃圾回收器回收,Java虛擬機就會把這個軟引用加入到與之關聯的引用隊列中。

弱引用

  • 弱引用與軟引用的區別在於:只具有弱引用的對象擁有更短暫的生命週期。在垃圾回收器線程掃描它所管轄的內存區域的過程中,一旦發現了只具有弱引用的對象,不管當前內存空間足夠與否,都會回收它的內存。不過,由於垃圾回收器是一個優先級很低的線程,因此不一定會很快發現那些只具有弱引用的對象。

    如果這個對象是偶爾的使用,並且希望在使用時隨時就能獲取到,但又不想影響此對象的垃圾收集,那麼你應該用 Weak Reference 來記住此對象。
    實例:
    這裏寫圖片描述

虛引用

  • 虛引用也稱爲幻影引用:一個對象是都有虛引用的存在都不會對生存時間都構成影響,也無法通過虛引用來獲取對一個對象的真實引用。唯一的用處:能在對象被GC時收到系統通知,JAVA中用PhantomReference來實現虛引用。

對比

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章