溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java中的強(qiáng)引用與弱引用的區(qū)別與用處

發(fā)布時(shí)間:2020-04-11 10:44:22 來源:億速云 閱讀:303 作者:小新 欄目:編程語言

今天小編給大家分享的是java中的強(qiáng)引用與弱引用的區(qū)別與用處,很多人都不太了解,今天小編為了讓大家更加了解java中的強(qiáng)引用與弱引用,所以給大家總結(jié)了以下內(nèi)容,一起往下看吧。一定會(huì)有所收獲的哦。

java中的強(qiáng)引用與弱引用的區(qū)別與用處

一、強(qiáng)引用

我們平時(shí)new了一個(gè)對(duì)象就是強(qiáng)引用,例如

Object obj = new Object();

即使在內(nèi)存不足的情況下,JVM寧愿拋出OutOfMemory錯(cuò)誤也不會(huì)回收這種對(duì)象。

(推薦視頻教程:java視頻教程)

二、軟引用

如果一個(gè)對(duì)象只具有軟引用,則內(nèi)存空間足夠,垃圾回收器就不會(huì)回收它;如果內(nèi)存空間不足了,就會(huì)回收這些對(duì)象的內(nèi)存。

SoftReference<String> softRef=new SoftReference<String>(str);     // 軟引用

用處:

軟引用在實(shí)際中有重要的應(yīng)用,例如瀏覽器的后退按鈕。按后退時(shí),這個(gè)后退時(shí)顯示的網(wǎng)頁內(nèi)容是重新進(jìn)行請(qǐng)求還是從緩存中取出呢?這就要看具體的實(shí)現(xiàn)策略了。

(1)如果一個(gè)網(wǎng)頁在瀏覽結(jié)束時(shí)就進(jìn)行內(nèi)容的回收,則按后退查看前面瀏覽過的頁面時(shí),需要重新構(gòu)建。

(2)如果將瀏覽過的網(wǎng)頁存儲(chǔ)到內(nèi)存中會(huì)造成內(nèi)存的大量浪費(fèi),甚至?xí)斐蓛?nèi)存溢出。

如下代碼:

Browser prev = new Browser();               // 獲取頁面進(jìn)行瀏覽
SoftReference sr = new SoftReference(prev); // 瀏覽完畢后置為軟引用        
if(sr.get()!=null){ 
    rev = (Browser) sr.get();           // 還沒有被回收器回收,直接獲取
}else{
    prev = new Browser();               // 由于內(nèi)存吃緊,所以對(duì)軟引用的對(duì)象回收了
    sr = new SoftReference(prev);       // 重新構(gòu)建
}

以上就是java中的強(qiáng)引用與弱引用的區(qū)別與用處的簡(jiǎn)略介紹,當(dāng)然詳細(xì)使用上面的不同還得要大家自己使用過才領(lǐng)會(huì)。如果想了解更多,歡迎關(guān)注億速云行業(yè)資訊頻道哦!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI