天天看點

Java虛引用又稱幽靈引用

1.概念

虛引用是使用PhantomReference建立的引用,虛引用也稱為幽靈引用或者幻影引用,是所有引用類型中最弱的一個。一個對象是否有虛引用的存在,完全不會對其生命周期構成影響,也無法通過虛引用獲得一個對象執行個體。

2.說明

虛引用,正如其名,對一個對象而言,這個引用形同虛設,有和沒有一樣。

如果一個對象與GC Roots之間僅存在虛引用,則稱這個對象為虛可達(phantom reachable)對象。

當試圖通過虛引用的get()方法取得強引用時,總是會傳回null,并且,虛引用必須和引用隊列一起使用。既然這麼虛,那麼它出現的意義何在??

别慌别慌,自然有它的用處。它的作用在于跟蹤垃圾回收過程,在對象被收集器回收時收到一個系統通知。 當垃圾回收器準備回收一個對象時,如果發現它還有虛引用,就會在垃圾回收後,将這個虛引用加入引用隊列,在其關聯的虛引用出隊前,不會徹底銷毀該對象。 是以可以通過檢查引用隊列中是否有相應的虛引用來判斷對象是否已經被回收了。

3.适用場景

4.小結

虛引用是最弱的引用
虛引用對對象而言是無感覺的,對象有虛引用跟沒有是完全一樣的
虛引用不會影響對象的生命周期
虛引用可以用來做為對象是否存活的監控      

繼續閱讀