java學(xué)習(xí)筆記-----Java的四種引用

強(qiáng)引用(Strong Reference)

最常用的引用類型,如Object obj = new Object(); 。只要強(qiáng)引用存在則GC時(shí)則必定不被回收。

軟引用(Soft Reference)

用于描述還有用但非必須的對(duì)象,當(dāng)堆將發(fā)生OOM(Out Of Memory)時(shí)則會(huì)回收軟引用所指向的內(nèi)存空間,若回收后依然空間不足才會(huì)拋出OOM。一般用于實(shí)現(xiàn)內(nèi)存敏感的高速緩存。 當(dāng)真正對(duì)象被標(biāo)記finalizable以及的finalize()方法調(diào)用之后并且內(nèi)存已經(jīng)清理, 那么如果SoftReference object還存在就被加入到它的 ReferenceQueue.只有前面幾步完成后,Soft Reference和Weak Reference的get方法才會(huì)返回null

弱引用(Weak Reference)

發(fā)生GC時(shí)必定回收弱引用指向的內(nèi)存空間。 和軟引用加入隊(duì)列的時(shí)機(jī)相同

虛引用(Phantom Reference)

又稱為幽靈引用或幻影引用,虛引用既不會(huì)影響對(duì)象的生命周期,也無(wú)法通過(guò)虛引用來(lái)獲取對(duì)象實(shí)例,僅用于在發(fā)生GC時(shí)接收一個(gè)系統(tǒng)通知。 當(dāng)一個(gè)對(duì)象的finalize方法已經(jīng)被調(diào)用了之后,這個(gè)對(duì)象的幽靈引用會(huì)被加入到隊(duì)列中。通過(guò)檢查該隊(duì)列里面的內(nèi)容就知道一個(gè)對(duì)象是不是已經(jīng)準(zhǔn)備要被回收了. 虛引用和軟引用和弱引用都不同,它會(huì)在內(nèi)存沒(méi)有清理的時(shí)候被加入引用隊(duì)列.虛引用的建立必須要傳入引用隊(duì)列,其他可以沒(méi)有

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容