Java中的強引用和弱引用
阿新 • • 發佈:2018-09-24
style 關系 term handle ren soft obj jsb false
旭日Follow_24 的CSDN 博客 ,全文地址請點擊:
https://blog.csdn.net/xuri24/article/details/81114944
一、強引用
如下是強引用的經典形式:
object o = new object();
特點:
(1)創建一個對象,並將對這個對象的引用賦值給o,這樣就是強引用了
(2)當內存空間不足的時候,虛擬機寧願拋出錯誤,也不願意回收內存
(3)可以使用 o = null;的方式來弱化引用
(4)如果一個對象,沒有一個引用來指向他,那麽這個引用可以被垃圾回收
二、軟引用
softReference<String> softRef = new softReference<String>(str);
特點:
(1)軟引用可以實現內存敏感的高速緩存
(2)當內存空間不足的時候,就回收這些對象
(3)hold on until you can‘t
三、弱引用
WeakReference<String> weakRef = new WeakReference<String>(str);
(1)弱引用和軟引用的區別在於其擁有更短的生命周期
(2)不管當前的內存空間是否足夠,都會回收他的內存
(3)偶爾才使用到的對象,我們使用弱引用的機制
四、總結
他們之間的關系:SoftReference > WeakReference > PhantomReference
如下是幾種引用的回收和生命周期圖
Java中的強引用和弱引用