最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

千鋒教育Java入門全套視頻教程(java核心技術(shù),適合java零基礎(chǔ),Java

2023-07-18 21:58 作者:寒江歌行  | 我要投稿

軟引用(Soft Reference)——內(nèi)存不足即回收

軟引用是用來描述一些還有用,但非必需的對(duì)象。只被軟引用關(guān)聯(lián)著的對(duì)象,在系統(tǒng)將要發(fā)生內(nèi)存溢出異常前,會(huì)把這些對(duì)象列進(jìn)回收范圍之中進(jìn)行第二次回收,如果這次回收還沒有足夠的內(nèi)存,才會(huì)拋出內(nèi)存溢出異常。

軟引用通常用來實(shí)現(xiàn)內(nèi)存敏感的緩存。比如:高速緩存就有用到軟引用。如果還有空閑內(nèi)存,就可以暫時(shí)保留緩存,當(dāng)內(nèi)存不足時(shí)清理掉,這樣就保證了使用緩存的同時(shí),不會(huì)耗盡內(nèi)存。

垃圾回收器在某個(gè)時(shí)刻決定回收軟可達(dá)的對(duì)象的時(shí)候,會(huì)清理軟引用,并可選地把引用存放到一個(gè)引用隊(duì)列(Reference Queue)。

類似弱引用,只不過Java虛擬機(jī)會(huì)盡量讓軟引用的存活時(shí)間長一些,迫不得已才清理。

在JDK1.2版之后提供了java.lang.ref.SoftReference類來實(shí)現(xiàn)軟引用

Objectobj=newObject();// 聲明強(qiáng)引用

SoftReference<Object>sf=newSoftReference<>(obj);obj=null;//銷毀強(qiáng)引用

弱引用(Weak Reference)——發(fā)現(xiàn)即回收

弱引用也是用來描述那些非必需對(duì)象,只被弱引用關(guān)聯(lián)的對(duì)象只能生存到下一次垃圾收集發(fā)生為止。在系統(tǒng)GC時(shí),只要發(fā)現(xiàn)弱引用,不管系統(tǒng)堆空間使用是否充足,都會(huì)回收掉只被弱引用關(guān)聯(lián)的對(duì)象。

但是,由于垃圾回收器的線程通常優(yōu)先級(jí)很低,因此,并不一定能很快地發(fā)現(xiàn)持有弱引用的對(duì)象。在這種情況下,弱引用對(duì)象可以存在較長的時(shí)間。

弱引用和軟引用一樣,在構(gòu)造弱引用時(shí),也可以指定一個(gè)引用隊(duì)列,當(dāng)弱引用對(duì)象被回收時(shí),就會(huì)加入指定的引用隊(duì)列,通過這個(gè)隊(duì)列可以跟蹤對(duì)象的回收情況。

軟引用、弱引用都非常適合來保存那些可有可無的緩存數(shù)據(jù)。如果這么做,當(dāng)系統(tǒng)內(nèi)存不足時(shí),這些緩存數(shù)據(jù)會(huì)被回收,不會(huì)導(dǎo)致內(nèi)存溢出。而當(dāng)內(nèi)存資源充足時(shí),這些緩存數(shù)據(jù)又可以存在相當(dāng)長的時(shí)間,從而起到加速系統(tǒng)的作用。

在JDK1.2版之后提供了WeakReference類來實(shí)現(xiàn)弱引用

Objectobj=newObject();// 聲明強(qiáng)引用

WeakReference<Object>sf=newWeakReference<>(obj);obj=null;//銷毀強(qiáng)引用

弱引用對(duì)象與軟引用對(duì)象的最大不同就在于,當(dāng)GC在進(jìn)行回收時(shí),需要通過算法檢查是否回收軟引用對(duì)象,而對(duì)于弱引用對(duì)象,GC總是進(jìn)行回收。弱引用對(duì)象更容易、更快被GC回收。

虛引用(Phantom Reference)——對(duì)象回收跟蹤

也稱為“幽靈引用”或者“幻影引用”,是所有引用類型中最弱的一個(gè)。

一個(gè)對(duì)象是否有虛引用的存在,完全不會(huì)決定對(duì)象的生命周期。如果一個(gè)對(duì)象僅持有虛引用,那么它和沒有引用幾乎是一樣的,隨時(shí)都可能被垃圾回收器回收。

它不能單獨(dú)使用,也無法通過虛引用來獲取被引用的對(duì)象。當(dāng)試圖通過虛引用的get()方法取得對(duì)象時(shí),總是null

為一個(gè)對(duì)象設(shè)置虛引用關(guān)聯(lián)的唯一目的在于跟蹤垃圾回收過程。比如:能在這個(gè)對(duì)象被收集器回收時(shí)收到一個(gè)系統(tǒng)通知。

虛引用必須和引用隊(duì)列一起使用。虛引用在創(chuàng)建時(shí)必須提供一個(gè)引用隊(duì)列作為參數(shù)。當(dāng)垃圾回收器準(zhǔn)備回收一個(gè)對(duì)象時(shí),如果發(fā)現(xiàn)它還有虛引用,就會(huì)在回收對(duì)象后,將這個(gè)虛引用加入引用隊(duì)列,以通知應(yīng)用程序?qū)ο蟮幕厥涨闆r。

由于虛引用可以跟蹤對(duì)象的回收時(shí)間,因此,也可以將一些資源釋放操作放置在虛引用中執(zhí)行和記錄。

在JDK1.2版之后提供了PhantomReference類來實(shí)現(xiàn)虛引用。

Objectobj=newObject();// 聲明強(qiáng)引用

ReferenceQueuephantomQueue=newReferenceQueue();PhantomReference<Object>sf=newPhantomReference<>(obj,phantomQueue);obj=null;


千鋒教育Java入門全套視頻教程(java核心技術(shù),適合java零基礎(chǔ),Java的評(píng)論 (共 條)

分享到微博請遵守國家法律
将乐县| 鄯善县| 洛川县| 辽宁省| 太康县| 和龙市| 汕头市| 眉山市| 周至县| 出国| 霍州市| 鄄城县| 林州市| 舞阳县| 商水县| 阿坝县| 光泽县| 长丰县| 湖州市| 龙泉市| 吉林市| 青神县| 毕节市| 麻城市| 铅山县| 永吉县| 泗阳县| 黑水县| 汽车| 筠连县| 安溪县| 邢台市| 枝江市| 长岭县| 金秀| 汝城县| 陈巴尔虎旗| 信宜市| 延寿县| 彩票| 远安县|