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