天天看點

[Java] 的四種引用,強弱軟虛,用到的場景

版權聲明:請尊重個人勞動成果,轉載注明出處,謝謝!

從jdk1.2版本開始,把對象的引用分為四種級别,進而使程式能更加靈活的控制對象的生命周期。這四種級别由高到低依次為:強引用、軟引用、弱引用和虛引用。

1 . 強引用(strongreference)

2 . 弱引用(weakreference)

3 . 軟引用(softreference)

4 . 虛引用(phantomreference)

“虛引用”顧名思義,就是形同虛設,與其他幾種引用都不同,虛引用并不會決定對象的生命周期。如果一個對象僅持有虛引用,那麼它就和沒有任何引用一樣,在任何時候都可能被垃圾回收器回收。 

虛引用主要用來跟蹤對象被垃圾回收器回收的活動。虛引用與軟引用和弱引用的一個差別在于:虛引用 必須 和引用隊列 (referencequeue)聯合使用。當垃圾回收器準備回收一個對象時,如果發現它還有虛引用,就會在回收對象的記憶體之前,把這個虛引用加入到與之 關聯的引用隊列中。

如下代碼建立虛引用:

弱引用、軟引用可以和一個引用隊列(referencequeue)聯合使用,如果其所引用的對象被垃圾回收,java虛拟機就會把這個弱引用加入到與之關聯的引用隊列中。

在建立任何弱引用、軟引用和虛引用的過程中你可以通過如下代碼提供引用隊列referencequeue。