生活随笔
收集整理的這篇文章主要介紹了
java中引用
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
? ? ? 談?wù)揓ava肯定離不開其中的垃圾回收機(jī)制,無(wú)論是通過(guò)引用計(jì)數(shù)算法判斷對(duì)象的引用數(shù)量,還是通過(guò)根搜索算法判斷對(duì)象的引用鏈?zhǔn)欠窨蛇_(dá),判斷對(duì)象是否存活都與“引用”有關(guān)。
? ? ?在JDK1.2之前,Java中引用的定義很傳統(tǒng):如果reference類型的數(shù)據(jù)中存儲(chǔ)的數(shù)值代表的是另一塊內(nèi)存的起始地址,就稱這塊內(nèi)存代表著一個(gè)引用。這種定義很純粹,但是太過(guò)狹隘,一個(gè)對(duì)象在這種定義下只有被引用和沒(méi)有被引用的兩種狀態(tài),對(duì)于如何描述一個(gè)“食之無(wú)味,棄之可惜”的對(duì)象就顯得無(wú)能為力了。希望能夠描述一個(gè)這樣的對(duì)象:當(dāng)內(nèi)存空間還足夠時(shí),則保留在內(nèi)存中;如果內(nèi)存在垃圾收集后還是很緊張,則可以拋棄這些對(duì)象。
? ? ?在JDK1.2之后,Java對(duì)引用的概念進(jìn)行了擴(kuò)充,將引用分為強(qiáng)引用(Strong Reference)、軟引用(Soft Reference)、弱引用(Weak Reference)、虛引用(Phantom Reference)四種,這四種引用強(qiáng)度依次逐漸減弱。
強(qiáng)引用就是指在程序代碼之中普遍存在的,類似“Object obj = new Object()”這類的引用,只要強(qiáng)引用還存在,垃圾收集器就永遠(yuǎn)不會(huì)回收掉被引用的對(duì)象。 軟引用用來(lái)描述一些還有用,但并非必須得對(duì)象。對(duì)于軟引用關(guān)聯(lián)著的對(duì)象,在系統(tǒng)將要發(fā)出內(nèi)存溢出異常之前,將會(huì)把這些對(duì)象列進(jìn)回收范圍之內(nèi)并進(jìn)行第二次回收。如果這次回收還是沒(méi)有足夠的內(nèi)存,才會(huì)拋出內(nèi)存溢出異常。類SoftReference實(shí)現(xiàn)軟引用。 弱引用也是用來(lái)描述非必須得對(duì)象的,但是強(qiáng)度比軟引用更弱一些,被弱引用關(guān)聯(lián)的對(duì)象只能存活到下一次垃圾收集發(fā)生之前。當(dāng)垃圾收集器工作時(shí),無(wú)論當(dāng)前內(nèi)存是否足夠,都會(huì)回收掉只被弱引用關(guān)聯(lián)的對(duì)象。類WeakReference實(shí)現(xiàn)弱引用。 虛引用也稱為幽靈引用或者是幻影引用,是最弱的一種引用關(guān)系。一個(gè)對(duì)象是否會(huì)有虛引用的存在,完全不會(huì)對(duì)其生存時(shí)間造成影響,也無(wú)法通過(guò)一個(gè)虛引用來(lái)獲得一個(gè)對(duì)象實(shí)例。為一個(gè)對(duì)象設(shè)置虛引用關(guān)聯(lián)的唯一目的就是 希望能在這個(gè)對(duì)象被收集器回收時(shí)得到一個(gè)系統(tǒng)的通知。類PhantomReference實(shí)現(xiàn)虛引用。
轉(zhuǎn)載于:https://www.cnblogs.com/leilei-lily/p/4727126.html
總結(jié)
以上是生活随笔為你收集整理的java中引用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。