強引用,軟引用,弱引用,虛引用

Adrian_Dai發表於2018-05-09

參考周志明老師的《深入理解Java虛擬機器:JVM高階特性與最佳實踐》

按照標題:4種引用的強度依次減弱

強引用

強引用類似:Object obj = new Object();

只要強引用在,垃圾回收器就不會回收該物件。


軟引用

軟引用描述的是一些還有用但並不是必需的物件。在系統將要發生記憶體溢位的異常時,會將這些物件列進回收的範圍進行第二次的回收。就是說當記憶體空間還足夠的時候,會將這些物件保留在記憶體中。Java通過SoftReference來實現軟引用。


弱引用

該引用描述的是非必需的物件。這些物件只能夠生存到下一次的垃圾回收發生之前。跟軟引用不同的是,弱引用的物件無論記憶體是否足夠,都會被垃圾回收器回收掉。Java通過WeakReference類實現弱引用。


虛引用

該引用被稱為:幽靈引用或者幻影引用。一個物件是否有虛引用的存在,完全不會對其生存時間構成影響。唯一的目的就是:該物件被垃圾回收器回收的時候會收到一個系統的通知。Java通過PhantomReference類實現虛引用。

相關文章