Java中的四種引用

引用在java中無處不在,一個對象的引用狀態也影響着jvm對其的回收。這裏簡單介紹一下java中的四種引用。引用強度按照順序依次減弱。

1.強引用

強引用是最常見的引用類型,平時用的最多,類似“X x = new X()” 的形式即爲強引用,只要強引用存在,對象就不會被jvm回收。所以我們有時候看源碼的時候會發現類似這樣的代碼“arr[i]=null”(在jdk集合源碼常見),這樣是方便jvm進行垃圾回收。

2.軟引用

軟引用使用SoftReference來表示。在系統將要發生內存溢出之前,將會把軟引用所關聯的對象列進回收範圍並進行第二次回收,因爲這個特性,他很適合用作系統中的簡單緩存(雖然一般都會使用第三方的解決方案如redis)。

3.弱引用

弱引用使用WeakReference來表示,弱引用的對象只能存活到下一次垃圾回收之前,而不論內存是否足夠。基本很少使用。

4.虛引用

虛引用也稱幽靈引用,使用PhantomReference來表示。是最弱的一種引用,其get方法返回值總爲null,即無法通過虛引用獲得一個對象實例,設置一個對象和虛引用相關聯的唯一目的就是在這個對象被垃圾回收時收到一個通知。虛引用需要和引用隊列一起使用。關於虛引用的一個用處我知道的是在java中對於堆外內存的釋放(具體可以看我的另一篇文章)。

參考:周志明 《深入理解java虛擬機》

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