Java Reference類


Java Reference類

Reference類時SoftReference、WeakReference、PhantomReference類的父類。

由于Reference與GC密切配合,Reference不應(yīng)當(dāng)被繼承實現(xiàn)(Reference的所有構(gòu)造方法都是包訪問權(quán)限)。

Reference類的成員包括:

  1. referent嫁审,Reference類包裝的對象引用
  2. queue,引用隊列赖晶,通過構(gòu)造函數(shù)傳入律适,引用對象在隊列上注冊,確認(rèn)引用對象的狀態(tài)
  3. pending,等待隊列

Reference對象四種狀態(tài):

  1. active擦耀,GC會特殊對待此狀態(tài)的引用棉圈,一旦被引用的對象的可達性發(fā)生變化(如失去強引用,只剩弱引用眷蜓,可以被回收)分瘾,GC會將引用放入pending隊列并將其狀態(tài)改為pending狀態(tài)
  2. pending,位于pending隊列吁系,等待ReferenceHandler線程將引用入隊queue
  3. enqueue德召,ReferenceHandler將引用入隊queue
  4. inactive,引用從queue出隊后的最終狀態(tài)汽纤,該狀態(tài)不可變

一個弱引用的回收過程

1        Object o = new Object();
2        ReferenceQueue<Object> queue = new ReferenceQueue<>();
3        WeakReference<Object> wr = new WeakReference<>(o, queue);
4        o = null;
5        System.gc();
6        System.out.println(wr.get());
7        assert wr.get() == null;
  1. 第3行上岗,wr創(chuàng)建,處于active狀態(tài)
  2. 第4行蕴坪,對象o失去強引用肴掷,第5行觸發(fā)GC,回收器發(fā)現(xiàn)o的可達性發(fā)生變化背传,將referent置為null呆瞻,此時wr.get返回null,將wr放入pending隊列径玖,wr進入pending狀態(tài)痴脾,wr不關(guān)心o最終是否被回收
  3. ReferenceHandler線程從pending隊列中取出wr,將其放入queue中梳星,wr進入enqueue狀態(tài)
  4. 調(diào)用queue.poll或queue.remove方法赞赖,wr出隊,wr進入inactive狀態(tài)

參考:http://hongjiang.info/java-referencequeue/
參考:http://mindprod.com/jgloss/phantom.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末冤灾,一起剝皮案震驚了整個濱河市前域,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌韵吨,老刑警劉巖话侄,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異学赛,居然都是意外死亡,警方通過查閱死者的電腦和手機吞杭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門盏浇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人芽狗,你說我怎么就攤上這事绢掰。” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵滴劲,是天一觀的道長攻晒。 經(jīng)常有香客問我,道長班挖,這世上最難降的妖魔是什么鲁捏? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮萧芙,結(jié)果婚禮上给梅,老公的妹妹穿的比我還像新娘。我一直安慰自己双揪,他們只是感情好动羽,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著渔期,像睡著了一般运吓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疯趟,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天拘哨,我揣著相機與錄音,去河邊找鬼迅办。 笑死宅静,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的站欺。 我是一名探鬼主播姨夹,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼矾策!你這毒婦竟也來了磷账?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤贾虽,失蹤者是張志新(化名)和其女友劉穎逃糟,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蓬豁,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡绰咽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了地粪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片取募。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蟆技,靈堂內(nèi)的尸體忽然破棺而出玩敏,到底是詐尸還是另有隱情斗忌,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布旺聚,位于F島的核電站织阳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏砰粹。R本人自食惡果不足惜唧躲,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望伸眶。 院中可真熱鬧惊窖,春花似錦、人聲如沸厘贼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嘴秸。三九已至毁欣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間岳掐,已是汗流浹背凭疮。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留串述,地道東北人执解。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像纲酗,于是被迫代替她去往敵國和親衰腌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容

  • ReferenceQueue 引用隊列,在檢測到適當(dāng)?shù)目傻竭_性更改后吮螺,垃圾回收器將已注冊的引用對象添加到該隊列中 ...
    tomas家的小撥浪鼓閱讀 36,137評論 10 59
  • 感知GC饶囚。怎么感知:* 通過get來判斷已經(jīng)被GC(PhantomReference 在任何時候get都是null...
    YDDMAX_Y閱讀 1,834評論 0 4
  • 從基礎(chǔ)講起 Reference 主要是負責(zé)內(nèi)存的一個狀態(tài),當(dāng)然它還和java虛擬機鸠补,垃圾回收器打交道萝风。Refere...
    小小的coder閱讀 407評論 0 0
  • 引用類型 JDK1.2之后,Java擴充了引用的概念紫岩,將引用分為強引用闹丐、軟引用、弱引用和虛引用四種被因。 強引用類似于...
    德彪閱讀 4,411評論 0 10
  • 每個人生存在世卿拴,隨著時間的變化,其人生的角色也在不斷的變化著梨与,這種變化又是如此的不可逆轉(zhuǎn)堕花,不同的角色有著不同...
    客舟聽雨2011閱讀 310評論 2 4