真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

09-JAVA四種引用類(lèi)型?-創(chuàng)新互聯(lián)

在JDK1.2版之后,Java對(duì)引用的概念進(jìn)行了擴(kuò)充,將引用分為強(qiáng)引用(Strongly Reference)、軟引用(Soft Reference)、弱引用(Weak Reference)和虛引用(Phantom Reference)4種,Java中4種引用的級(jí)別由高到低依次為:強(qiáng)引用 >軟引用 >弱引用 >虛引用.

創(chuàng)新互聯(lián)自2013年起,先為固始等服務(wù)建站,固始等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為固始企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。1.強(qiáng)引用(Strongly Reference)

“永遠(yuǎn)不會(huì)回收掉被引用的對(duì)象”
在這里插入圖片描述

在 Java 中最常見(jiàn)的就是強(qiáng)引用,把一個(gè)對(duì)象賦給一個(gè)引用變量,這個(gè)引用變量就是一個(gè)強(qiáng)引
用, 即類(lèi)似“Object obj=new Object()”這種引用關(guān)系。

當(dāng)一個(gè)對(duì)象被強(qiáng)引用變量引用時(shí),它處于可達(dá)狀態(tài),它是不可能被垃圾回收機(jī)制回收的,即使該對(duì)象以后永遠(yuǎn)都不會(huì)被用到 JVM 也不會(huì)回收。因此強(qiáng)引用是造成 Java 內(nèi)存泄漏的主要原因之一。

class A{public void say(){System.out.println("hello");
    }
}

public class Solution {public static void main(String[] args){//強(qiáng)引用
        A a = new A();
        a.say();
    }
}

在這里插入圖片描述

2.軟引用(Soft Reference)

“內(nèi)存不夠就回收,內(nèi)存充足不回收”
“適合做緩存”
在這里插入圖片描述

軟引用需要用 SoftReference 類(lèi)來(lái)實(shí)現(xiàn),對(duì)于只有軟引用的對(duì)象來(lái)說(shuō),當(dāng)系統(tǒng)內(nèi)存足夠時(shí)它不會(huì)被回收,當(dāng)系統(tǒng)內(nèi)存空間不足時(shí)它會(huì)被回收。軟引用通常用在對(duì)內(nèi)存敏感的程序中。

1、引用和對(duì)象通過(guò)SoftReference建立關(guān)聯(lián), 例如:SoftReference a = new SoftReference(new A());

2、當(dāng)系統(tǒng)內(nèi)存夠用就保留不回收(即使發(fā)生了GC),內(nèi)存不足時(shí),會(huì)被回收

3、軟引用自身不會(huì)被垃圾回收,因?yàn)镚C Root還引用著,軟引用自身需要配合引用隊(duì)列來(lái)釋放。

軟引用可以和一個(gè)引用隊(duì)列(ReferenceQueue)聯(lián)合使用,如果軟引用所引用的對(duì)象被垃圾回收器回收,Java虛擬機(jī)就會(huì)把這個(gè)軟引用加入到與之關(guān)聯(lián)的引用隊(duì)列中。

4、軟引用適合緩存使用的場(chǎng)景,當(dāng)內(nèi)存不夠的時(shí)候,對(duì)象是被回收的。

class A{public void say(){System.out.println("hello");
    }
}

public class Solution {public static void main(String[] args){//軟引用
        SoftReferenceasr=new SoftReference<>(new A());
        asr.get().say();
    }
}

在這里插入圖片描述

3.弱引用(Weak Reference)

“只要發(fā)生GC,一定被回收”
在這里插入圖片描述

1、弱引用需要用 WeakReference 類(lèi)來(lái)實(shí)現(xiàn),例如:WeakReference a = new WeakReference(new A());

2、如果僅有弱引用引用該對(duì)象時(shí),只要發(fā)生垃圾回收,就會(huì)釋放該對(duì)象

3、當(dāng)一個(gè)對(duì)象僅僅被弱引用指向, 而沒(méi)有任何其他強(qiáng)引用指向的時(shí)候, 如果GC運(yùn)行, 那么這個(gè)對(duì)象就會(huì)被回收。如果存在強(qiáng)引用同時(shí)與之關(guān)聯(lián),則進(jìn)行垃圾回收時(shí)不會(huì)回收該對(duì)象。

4、ThreadLocal和WeakHashMap內(nèi)部都是使用了弱引用,用來(lái)保證那些不被用到的key值,在垃圾回收的時(shí)候可以被回收掉。

class A{public void say(){System.out.println("hello");
    }
}

public class Solution {public static void main(String[] args){//弱引用
        WeakReference awr = new WeakReference(new A());
        ((A)awr.get()).say();
    }
}

在這里插入圖片描述

4.虛引用(Phantom Reference)

“發(fā)生GC時(shí), 總會(huì)被回收”

1、 虛引用需要 PhantomReference 類(lèi)來(lái)實(shí)現(xiàn),它不能單獨(dú)使用,必須和引用隊(duì)列聯(lián)合使用, 例如: PhantomReference a = new PhantomReference(new A(), referenceQueue);

2、當(dāng)虛引用所引用的對(duì)象被回收時(shí)(a對(duì)象、b對(duì)象),由 Reference Handler 線程將虛引用對(duì)象入隊(duì),這樣就可以知道哪些對(duì)象被回收,從而對(duì)它們關(guān)聯(lián)的資源做進(jìn)一步處理

3、 也稱(chēng)為幽靈引用或者幻影引用,它是最弱的引用關(guān)系。無(wú)法通過(guò)虛引用來(lái)取得一個(gè)對(duì)象實(shí)例。為一個(gè)對(duì)象設(shè)置虛引用關(guān)聯(lián)的唯一目的就是能在這個(gè)對(duì)象被收集器回收時(shí)收到一個(gè)系統(tǒng)通知。虛引用的主要作用是跟蹤對(duì)象被垃圾回收的狀態(tài)。

4、被軟引用關(guān)聯(lián)的對(duì)象只有在內(nèi)存不足時(shí)才會(huì)被回收,而被弱引用關(guān)聯(lián)的對(duì)象在JVM進(jìn)行垃圾回收時(shí)總會(huì)被回收。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


網(wǎng)頁(yè)名稱(chēng):09-JAVA四種引用類(lèi)型?-創(chuàng)新互聯(lián)
標(biāo)題路徑:
http://weahome.cn/article/hgogh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部