分類(lèi):
Java中的四種引用類(lèi)型分別是強(qiáng)引用、軟引用、弱引用和虛引用,
特點(diǎn):
強(qiáng)引用(Strong Reference):強(qiáng)引用是最普通的引用類(lèi)型,通過(guò)new關(guān)鍵字創(chuàng)建的對(duì)象默認(rèn)就是強(qiáng)引用。當(dāng)一個(gè)對(duì)象被強(qiáng)引用變量引用時(shí),JVM就不會(huì)回收這個(gè)對(duì)象,即使在內(nèi)存不足時(shí)也不會(huì)回收,只有當(dāng)強(qiáng)引用變量被賦值為null時(shí),才會(huì)被JVM回收。
軟引用(Soft Reference):軟引用是一種比強(qiáng)引用更弱的引用類(lèi)型。當(dāng)一個(gè)對(duì)象只被軟引用變量引用時(shí),在內(nèi)存不足時(shí),JVM會(huì)根據(jù)當(dāng)前堆內(nèi)存的使用情況決定是否回收這個(gè)對(duì)象。軟引用可以用來(lái)實(shí)現(xiàn)緩存,當(dāng)內(nèi)存不足時(shí),JVM會(huì)回收一些不常用的對(duì)象,從而保證程序不會(huì)因?yàn)閮?nèi)存不足而崩潰。
弱引用(Weak Reference):弱引用是一種比軟引用更弱的引用類(lèi)型。當(dāng)一個(gè)對(duì)象只被弱引用變量引用時(shí),JVM會(huì)在下一次垃圾回收時(shí)回收這個(gè)對(duì)象,不管當(dāng)前內(nèi)存是否足夠。弱引用可以用來(lái)實(shí)現(xiàn)一些特殊的緩存策略,如虛擬機(jī)中的ThreadLocal類(lèi)。
虛引用(Phantom Reference):虛引用是一種比弱引用更弱的引用類(lèi)型。當(dāng)一個(gè)對(duì)象只被虛引用變量引用時(shí),JVM會(huì)在垃圾回收時(shí)將這個(gè)對(duì)象放入一個(gè)隊(duì)列中,如果這個(gè)對(duì)象沒(méi)有被任何強(qiáng)引用、軟引用或弱引用變量引用,則這個(gè)對(duì)象會(huì)被回收。虛引用主要用于跟蹤對(duì)象是否被垃圾回收器回收的情況,可以用于一些特殊的資源管理和清理任務(wù)。