首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 四大引用類型深度解析:強、軟、弱、虛引用的區別與應用場景

     編輯:Java 綜合教學

Java 四大引用類型深度解析:強、軟、弱、虛引用的區別與應用場景

Java 中的引用類型決定了物件在垃圾回收 (GC) 時的存活策略。理解這四種引用的差異,對於記憶體管理、快取設計與避免記憶體洩漏至關重要。本文參考《深入理解 Java 虛擬機》整理如下:

1. 強引用

最常見的引用方式,程式碼中普遍存在,例如 Object obj = new Object()。只要強引用存在,垃圾收集器永遠不會回收被引用的物件,即使記憶體不足拋出 OutOfMemoryError 也不會回收。

2. 軟引用

用於描述「還有用但非必需」的物件。在系統即將發生記憶體溢出前,會將這些物件列入回收範圍進行二次回收;若回收後仍不足記憶體,才會拋出 OutOfMemoryError。JDK 1.2 後提供 SoftReference 類別實現。適用場景:記憶體敏感的快取(如圖片快取、網頁快取)。

3. 弱引用

同樣描述非必需物件,但強度比軟引用更弱。只能存活到下一次垃圾收集器執行前;當 GC 工作時,無論記憶體是否充足,都會回收僅被弱引用關聯的物件。JDK 1.2 後提供 WeakReference 類別實現。適用場景:監聽器、回調、WeakHashMap 的鍵值對。

4. 虛引用

又稱幽靈引用或幻影引用,是最弱的引用關係。物件是否有虛引用存在,完全不影響其生存時間,也無法透過虛引用取得物件實例。唯一目的:在物件被垃圾收集器回收時收到一個系統通知。JDK 1.2 後提供 PhantomReference 類別實現。適用場景:追蹤物件回收時間、進行資源釋放(如直接記憶體釋放)。

—— 摘自《深入理解 Java 虛擬機》

總結對比表:

引用類型回收時機主要用途對應類別
強引用永不回收一般物件持有無
軟引用記憶體不足前快取SoftReference
弱引用下次 GC 時弱關聯映射、監聽器WeakReference
虛引用回收時通知資源釋放追蹤PhantomReference
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved