Java中的引用(強引用、軟引用、弱引用、虛引用)

  • 強引用:常見的Object obj = new Object();只要強引用還在,垃圾回收器就永遠不會回收掉此對象。
  • 軟引用:用來描述一些有用但非必要的對象。在內存即將發生泄露以前,會把這些對象列進回收範圍之中進行二次垃圾回收。若是此次回收尚未足夠的內存,那麼纔會發生內存溢出。軟引用能夠用來實現內存敏感的高速緩存。
  • 弱引用:用來描述非必要的對象,被弱引用關聯的對象只能活到下次垃圾回收以前。當進行垃圾回收時,不管內存是否足夠,都將回收被弱引用關聯的對象。
  • 虛引用:最弱的一種引用關係。沒法經過虛引用獲取一個對象。一個對象是否有虛引用,都不會對其生命週期構成影響。其惟一目的就是在垃圾回收時收到一個系統通知。它和軟引用和弱引用不一樣的是:虛引用必須和引用隊列聯合使用。在垃圾回收準備回收一個對象時,發現這個對象還有虛引用,那麼就會在回收對象以前,把這個虛引用加入到與之關聯的引用隊列當中。若是程序發現某個虛引用已經被加入到引用隊列,那麼就能夠在所引用的對象內存被回收以前採起必要的措施。

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

相關文章
相關標籤/搜索