強引用、弱引用、軟引用、幻想引用有什么區別?具體使用場景是什么?


  強引用就是我們常見的創建對象實例的時候就是new的過程,只要他還指向一個對象,就表明他還活着,垃圾收集器就不會碰如果沒有其他的引用關系,或者將其顯示的賦值為null,就可以被回收。

  軟引用可以豁免一些垃圾回收,只有當jvm認為內存不足的才會試圖回收引用所指向的對象,jvm在確保拋出oom時,會清理軟引用指向的對象,通常用來實現內存敏感的緩存,如果還有空閑內存,就暫時保留緩存,當內存不足時清理掉,這樣就保證了使用緩存的同時,不會耗盡內存。

  弱引用並不能是對象豁免垃圾收集,僅僅是提供了一種訪問弱引用下對象的途徑。可以用來構建一種沒有特定約束的關系,比如,維護一種非強制的映射關系,如果獲取是還在就是用它,否則實例化。

  幻想引用不能通過他訪問對象,僅僅提供一種確保對象被finalize以后,做某些事情的機制,比如post-mortem清理機制

 ps:關注一下本人公眾號,每周都有新更新哦!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM