1. 程式人生 > 程式設計 >淺談Java 中的引用型別

淺談Java 中的引用型別

Java 中的引用型別:強引用、軟引用、弱引用和虛引用

強引用

如 Object object = new Object(),那 object 就是一個強引用,如果一個物件具有強引用,垃圾回收器就永遠不會回收它。

軟引用

軟引用用來描述一些還有用但非必需的物件。在記憶體即將發生記憶體溢位之前,會把這些物件列進回收範圍之中進行二次垃圾回收。如果這次回收還沒有足夠記憶體,才會發生記憶體溢位現象。

另:軟引用可用來實現記憶體敏感的快取記憶體。

弱引用

用來描述非必需的物件。被弱引用關聯的物件只能存活到下一次垃圾收集發生之前。當垃圾回收時,無論當前記憶體是否足夠,都將回收被弱引用關聯的物件。

虛引用

最弱的一種引用關係。無法通過一個虛引用獲得一個物件例項;一個物件是否有虛引用,都不會對其生存週期構成影響。

設定虛引用的唯一目的是在垃圾回收時收到一個系統通知。

虛引用與軟引用、弱引用的一個區別在於:虛引用必須和引用佇列(ReferenceQueue)聯合使用。當垃圾回收器準備回收一個物件時,如果發現它還有虛引用,會在垃圾回收之前,將該引用加入到與之對應關聯的引用佇列中。程式通過判斷引用佇列中是否已經加入了該虛引用,來了解被引用的物件是否將被垃圾回收。程式如果已經發現該虛引用被加入了引用佇列中,就會將所引用的物件的記憶體被回收之前採取必要的行動。

軟引用、弱引用的使用場景原理分析:實現記憶體敏感的快取記憶體。