你不可不知的Java引用型別之——WeakReference原始碼詳解
阿新 • • 發佈:2019-01-04
定義
WeakReference是弱引用,該引用不會影響垃圾回收器對物件的回收,不會影響物件的生命週期。
說明
當虛擬機器在某個時間點決定要回收一個弱可達(weakly-reachable)物件時,會自動清除該物件的所有弱引用。並且會將物件變為finalizable狀態,然後把這些剛清除的弱引用放到其註冊的引用佇列中。
[前面已經說明過WeakReference的用法了,本篇僅對WeakReference從原始碼角度做一些補充。
原始碼
public class WeakReference<T> extends Reference<T> { public WeakReference(T referent) { super(referent); } public WeakReference(T referent, ReferenceQueue<? super T> q) { super(referent, q); } }
嗯,十行程式碼,可以說是很簡單的一個類了,只有兩個建構函式,一個傳引用佇列,另一個不傳,沒有覆蓋父類Reference的任何方法。
WeakHashMap
說到WeakReference,自然不能不說WeakHashMap,這個map的用法與hashmap基本一致,它的特點便是使用弱引用作為key,這就讓它有一個很重要的特性,它可以自動清除自身,這樣就不需要再像之前SoftReference那樣需要手動去釋放引用例項。
關於WeakHashMap會在另一篇中有詳細的介紹,這裡就不多說了。
好像。。。沒什麼可講的了。在前面弱引用一篇裡基本都講完了。