Java中的引用

強引用、軟引用、弱引用、虛引用緩存

強引用:即經常使用的 object o = new object(); 只要強引用還在,垃圾回收器就永遠不會回收掉此類對象。對象

軟引用:用來描述一些還有用但非必須的對象。在內存即將發生內存溢出以前,會把這些對象列進回收範圍之中進行二次垃圾回收。若是此次回收尚未足夠內存,纔會發生內存溢出異常。軟引用可用來實現內存敏感的高速緩存。隊列

弱引用:描述非必須的對象。被弱引用關聯的對象只能存活到下一次垃圾收集發生以前。當進行垃圾回收時,不管當前內存是否足夠,都將回收掉被若引用關聯的對象。內存

虛引用:最弱的一種引用關係。沒法經過一個虛引用得到一個對象實例;一個對象是否有虛引用,都不會對其生存週期構成影響。設置虛引用的惟一目的就是在垃圾回收時收到一個系統通知。原理

虛引用與軟引用和弱引用的一個區別在於:虛引用必須和引用隊列(ReferenceQueue)聯合使用。當垃圾回收器準備回收一個對象時,若是發現它還有虛引用,就會在回收對象的內存以前,把這個虛引用加入到與之關聯的引用隊列中。程序能夠經過判斷引用隊列中是否已經加入了虛引用,來了解被引用的對象是否將要被垃圾回收。若是程序發現某個虛引用已經被加入到引用隊列,那麼就能夠在所引用的對象的內存被回收以前採起必要的行動。object

軟引用、弱引用的使用場景原理分析:實現內存敏感的高速緩存。垃圾回收

相關文章
相關標籤/搜索