虛引用

JAVA语言的一种引用方式

虛引用 是Java語言中的一種引用方式,在虛引用中,內存可以被回收。 虛引用是 Java語言中提供的非強引用的一種;其他兩種分別是弱引用 和 軟引用。[1] 虛引用是Java語言中最弱的一種引用。

在Java 8和早期版本中,finalize後的對象需要對應的軟應用被回收後才可以被回收。 Java 9[2] 中允許finalize後的引用對象被立即回收。

用例

虛引用的應用場景,主要是少量的技術上的使用,[3] 主要用來跟蹤對象被垃圾回收器回收的活動。首先,它可以用來代替 finalize 方法,保證對象在finalize時不會復活(resurrect)。 這允許對象在一個周期內完成垃圾回收,而不需要等待下一個垃圾回收周期以確保它沒有復活。 第二個用途是來檢測對象被回收的具體時間(通過與 ReferenceQueue 對象配合使用),確保其內存空間可用,例如延遲給新的對象分配內存(例如很大的圖片),直到以前的內存被釋放。

參見

參考文獻

  1. ^ java.lang.ref (Java Platform SE 8 ). Java™ Platform, Standard Edition 8 API Specification. Oracle. [6 August 2016]. (原始內容存檔於2021-05-07). 
  2. ^ oracle.com, kim barrett at. hg: jdk9/hs-rt/jdk: 8071507: (ref) Clear phantom reference as soft and weak references do. 28 December 2015 [2019-01-22]. (原始內容存檔於2019-08-14). 
  3. ^ Nicholas, Ethan. Understanding Weak References. www.java.net. May 4, 2006 [October 1, 2010]. (原始內容存檔於2010-08-19).