強引用就是我們常見的創建對象實例的時候就是new的過程,只要他還指向一個對象,就表明他還活着,垃圾收集器就不會碰如果沒有其他的引用關系,或者將其顯示的賦值為null,就可以被回收。
軟引用可以豁免一些垃圾回收,只有當jvm認為內存不足的才會試圖回收引用所指向的對象,jvm在確保拋出oom時,會清理軟引用指向的對象,通常用來實現內存敏感的緩存,如果還有空閑內存,就暫時保留緩存,當內存不足時清理掉,這樣就保證了使用緩存的同時,不會耗盡內存。
弱引用並不能是對象豁免垃圾收集,僅僅是提供了一種訪問弱引用下對象的途徑。可以用來構建一種沒有特定約束的關系,比如,維護一種非強制的映射關系,如果獲取是還在就是用它,否則實例化。
幻想引用不能通過他訪問對象,僅僅提供一種確保對象被finalize以后,做某些事情的機制,比如post-mortem清理機制
ps:關注一下本人公眾號,每周都有新更新哦!