讀書筆記-----Java中的引用

wuhulala發表於2017-03-01

引用

引用在java中的表示就是一個reference型別的資料中儲存的數值代表的是另一塊記憶體的起始地址,就稱這塊記憶體代表著一個引用。
分為強引用,軟引用,弱引用,虛引用 引用強度依次減弱!

1.強引用

強引用就是程式碼中普遍存在的,類似Object obj = new Object() 這類的引用,只要強引用還存在,垃圾收集器永遠不會回收掉被引用的物件。

2.軟引用

軟引用用來描述一些還有用,但是非必需的物件,對於軟引用關聯的物件,在系統將要發生記憶體溢位異常之前,將會把這些物件列進回收範圍之內並進行第二次回收。如果這次回收還是沒有足夠的記憶體,才會丟擲記憶體溢位異常,java提供了SoftReference類來實現軟引用。

3.弱引用

弱引用也是用來描述非必需的物件,但是它的強度要比軟引用更弱一些,對弱引用關聯的物件只能生存到下一次垃圾回收之前。當垃圾收集器工作的時候,無論當前記憶體是否充足,都會回收掉紙杯弱引用關聯的物件。Java提供WeakReference類來實現弱引用。

4.虛引用

虛引用也成為幽靈引用或者幻影引用。它是最弱的一種引用關係。一個物件是否又虛引用存在,完全不會關係到其生存時間。也無法通過虛引用來取得一個物件例項。為一個物件設定虛引用關聯的唯一目的就是希望能夠在被垃圾收集器回收的時候獲取到一個通知。Java提供了PhantomReference實現虛引用

相關文章