五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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)論 (共 條)

分享到微博請遵守國家法律
无棣县| 出国| 外汇| 哈密市| 乌兰浩特市| 赞皇县| 边坝县| 奉化市| 铁岭县| 淮南市| 丰台区| 永平县| 湾仔区| 凌源市| 博野县| 杭锦旗| 廉江市| 灵武市| 棋牌| 满洲里市| 宝应县| 宣汉县| 余庆县| 渑池县| 岳阳市| 徐闻县| 金乡县| 大姚县| 郯城县| 祁连县| 康定县| 寿阳县| 嫩江县| 城固县| 荃湾区| 乾安县| 衡南县| 姚安县| 阳朔县| 平利县| 永新县|