Java四種引用類型+ReferenceQueue+WeakHashMap

Summary

JDK1.2之前只提供一種引用類型——強引用:Object obj = new Object(); 。而JDK1.2之後多出的三個選擇分別是:html

  • 軟引用 java.lang.ref.SoftReference;
  • 弱引用 java.lang.ref.WeakReference;
  • 虛引用 java.lang.ref.PhantomReference

強引用java

最經常使用的引用類型,如Object obj = new Object(); 。只要強引用存在則GC時則一定不被回收。緩存

軟引用oracle

用於描述還有用但非必須的對象,當堆將發生OOM(Out Of Memory)時則會回收軟引用所指向的內存空間,若回收後依然空間不足纔會拋出 OOM 。通常用於實現內存敏感的高速緩存。htm

弱引用對象

發生GC時一定回收弱引用指向的內存空間。blog

虛引用生命週期

又稱爲幽靈引用或幻影引用,虛引用既不會影響對象的生命週期,也沒法經過虛引用來獲取對象實例,僅用於在發生GC時接收一個系統通知。內存

那麼問題來了,若一個對象的引用類型有多個,如何判斷它的可達性呢?其實規則以下:get

  1. 單條引用鏈的可達性以最弱的一個引用類型來決定;
  2. 多條引用鏈的可達性以最強的一個引用類型來決定;

References

相關文章
相關標籤/搜索