1. 程式人生 > >強引用、軟引用、弱引用、幻象引用的區別

強引用、軟引用、弱引用、幻象引用的區別

不同的引用型別,主要體現的是物件不同的可達性狀態和對垃圾手機的影響。

強引用,就是我們最常見的普通物件y引用,只要還有強引用指向一個物件,就能表明物件還“活著”,垃圾收集器就不會碰這種物件。對於一個普通的物件,如果沒有其他的引用關係,只要超過了引用的作用域或者顯示地將相應(強)引用賦值為null,就是可以被垃圾收集的了,當然具體回首時機還要看垃圾收集策略。

軟引用,是一種相對強引用弱化一些的引用,可以讓物件豁免一些垃圾收集,只有當JVM記憶體不足時,才會去試圖收回軟引用指向的物件。JVM會確保在丟擲OutOfMemoryError之前,清理軟引用指向的物件。軟引用通常用來實現記憶體敏感的快取,如果還有空閒記憶體,就可以暫時保留快取,當記憶體不足時清理掉,這樣就保證了使用快取的同時,不會耗盡記憶體。