什么是java四大引用?
是JDK1.2版本開始引入,把對象的引用分為4個等級,我們平時學(xué)習(xí)的就是四種的第一級的強(qiáng)引用,說白了,就Object o = new Object(),四個引用分別是強(qiáng)引用、軟引用、弱引用和虛引用,請記住它們的順序!因?yàn)檫@是它們對內(nèi)存的敏感程度!等級: 強(qiáng) > 軟 > 弱 > 虛
它們有什么作用?
靈活的控制對象的生命周期
提高對象的回收機(jī)率
理論加代碼分析:
1.什么是強(qiáng)引用
強(qiáng)引用就是我們平時使用的對象方式,也是使用最多的一種方式,請記住不管內(nèi)存緊張也罷,不足也罷,gc永不回收強(qiáng)引用的對象, 即使jvm出現(xiàn)(內(nèi)存溢出錯誤)OutOfMemoryError,使程序停止,也不會回收對象來提高內(nèi)存.
代碼
1. 什么是軟引用
對象具備軟引用,請記住,只要內(nèi)存足夠,我們不對對象回收,但是當(dāng)內(nèi)存不足,gc對軟引用對象進(jìn)行回收 可以看出軟引用對內(nèi)存很敏感,可用來高速緩存,同時它可以結(jié)合隊(duì)列使用,如果軟引用被gc回收,jvm就會把軟引用加入到隊(duì)列中。
代碼
3. 什么是弱引用?
gc不內(nèi)存是發(fā)現(xiàn)弱引用,就會立刻回收弱引用對象,但是我們知道gc是一個優(yōu)先級很低的線程,所以不一定立刻發(fā)現(xiàn)并回收弱引用對象,但記住,只要被gc發(fā)現(xiàn)弱引
用,不管內(nèi)存夠不夠,直接回收,同時,弱引用,也可以結(jié)合隊(duì)列使用,當(dāng)被回收,就進(jìn)入與之關(guān)聯(lián)的隊(duì)列中
代碼
4. 什么是虛引用?
虛引用和前面的軟引用、弱引用不同,它并不影響對象的生命周期。在java中用java.lang.ref.PhantomReference類表示。如果一個對象與虛引用關(guān)聯(lián),則跟沒有引用與之關(guān)聯(lián)一樣,在任何時候都可能被垃圾回收器回收。
要注意的是,虛引用必須和引用隊(duì)列關(guān)聯(lián)使用,當(dāng)垃圾回收器準(zhǔn)備回收一個對象 時,如果發(fā)現(xiàn)它還有虛引用,就會把這個虛引用加入到與之 關(guān)聯(lián)的引用隊(duì)列中。程序可以通過判斷引用隊(duì)列中是否已經(jīng)加入了虛引用,來了解被引用的對象是否將要被垃圾回 收。如果程序發(fā)現(xiàn)某個虛引用已經(jīng)被加入到引用隊(duì)列,那么就可以在所引用的對象的內(nèi) 存被回收之前采取必要的行動。
-
內(nèi)存
+關(guān)注
關(guān)注
8文章
3100瀏覽量
74864 -
JAVA
+關(guān)注
關(guān)注
20文章
2983瀏覽量
106462
發(fā)布評論請先 登錄
相關(guān)推薦
模數(shù)轉(zhuǎn)換電路的四個過程
請問DAC3484四個通道能否獨(dú)立使用?
請問AD9852四個輸出口有什么差別?
ADS1158 MUXOUT、MUXOUTP、ADCINP和ADCINN這四個管腳什么作用呢?
構(gòu)成電路的必要元件有哪四個
IGBT的四個主要參數(shù)
四個2輸入正極和柵極74AC11008數(shù)據(jù)表

四個2輸入正與非門54ACT11000數(shù)據(jù)表

四個2輸入異或門數(shù)據(jù)表

四個2輸入正極和柵極數(shù)據(jù)表

四個2輸入正極和柵極數(shù)據(jù)表

四個2輸入正與非門數(shù)據(jù)表

四個2輸入異或門數(shù)據(jù)表

四個2輸入正極和柵極數(shù)據(jù)表

有源晶振四個腳是如何定義的?

評論