1. 程式人生 > >強引用、弱引用、軟引用、虛引用

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

enc 存在 bject 永遠 足夠 列表 設置 系統通知 內存溢出

概念
我們希望能描述這樣一類對象:在內存空間還足夠時,則能保留在內存之中;如果內存空間在進行垃圾收集後還是非常緊張,則可以拋棄這些對象。在JDK 1.2之後,Java對引用的概念進行了擴充,將引用分為強引用(Strong Reference)、軟引用(Soft Reference)、弱引用(Weak Reference)、虛引用(Phantom Reference)。

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

弱引用
重點回收對象。
弱引用也是用來描述非必需對象的,被弱引用關聯的對象只能生存到下一次垃圾收集發生之前。

軟引用
內存將要溢出時才被回收。
軟引用是用來描述一些還有用但並非必需的對象。對於軟引用關聯著的對象,在系統將要發生內存溢出異常之前,將會把這些對象列表回收範圍之中進行二次回收。如果這次回收還沒有足夠的內存,才會拋出內存溢出異常。

虛引用(了解)
虛引用也稱為幽靈引用或者幻影引用,它是最弱的一種引用關系。一個對象是否有虛引用的存在,完全不會對其生存時間構成影響,也無法通過虛引用來取得一個對象實例。為一個對象設置虛引用關聯的唯一目的就是能在這個對象被收集器回收時收到一個系統通知。

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