Java 強引用 軟引用與弱引用,虛引用區(qū)別

  1. 強引用(StrongReference):
    如果一個對象具有強引用略号,那垃圾回收器絕不會回收它,當內存空間不足,Java虛擬機寧愿拋出OutOfMemoryError錯誤玄柠,使程序異常終止突梦,也不會靠隨意回收具有強引用的對象來解決內存不足的問題;
    Object o=new Object(); // 強引用
  2. 軟引用(SoftReference):
    軟引用是用來描述一些有用但并不是必需的對象羽利,在Java中用java.lang.ref.SoftReference類來表示宫患。對于軟引用關聯(lián)著的對象,只有在內存不足的時候JVM才會回收該對象这弧。因此娃闲,這一點可以很好地用來解決OOM的問題,并且這個特性很適合用來實現緩存:比如網頁緩存匾浪、圖片緩存等皇帮。
    軟引用可以和一個引用隊列(ReferenceQueue)聯(lián)合使用,如果軟引用所引用的對象被JVM回收蛋辈,這個軟引用就會被加入到與之關聯(lián)的引用隊列中属拾。下面是一個使用示例:
    SoftReference<String> sr = new SoftReference<String>(new String("hello"));
    System.out.println(sr.get());
  3. 弱引用(WeakReference)
      弱引用也是用來描述非必需對象的,當JVM進行垃圾回收時冷溶,無論內存是否充足渐白,都會回收被弱引用關聯(lián)的對象。在java中逞频,用java.lang.ref.WeakReference類來表示纯衍。下面是使用示例:
    WeakReference<String> sr = new WeakReference<String>(new String("hello"));
    System.out.println(sr.get());
    4.虛引用(PhantomReference)
    虛引用和前面的軟引用、弱引用不同虏劲,它并不影響對象的生命周期托酸。在java中用java.lang.ref.PhantomReference類表示。如果一個對象與虛引用關聯(lián)柒巫,則跟沒有引用與之關聯(lián)一樣励堡,在任何時候都可能被垃圾回收器回收。
    要注意的是堡掏,虛引用必須和引用隊列關聯(lián)使用应结,當垃圾回收器準備回收一個對象時,如果發(fā)現它還有虛引用泉唁,就會把這個虛引用加入到與之 關聯(lián)的引用隊列中鹅龄。程序可以通過判斷引用隊列中是否已經加入了虛引用,來了解被引用的對象是否將要被垃圾回收亭畜。如果程序發(fā)現某個虛引用已經被加入到引用隊列扮休,那么就可以在所引用的對象的內存被回收之前采取必要的行動。

引用隊列(Reference Queue):
一旦弱引用對象開始返回null拴鸵,該弱引用指向的對象就被標記成了垃圾玷坠。而這個弱引用對象(非其指向的對象)就沒有什么用了蜗搔。通常這時候需要進行一些清理工作。比如WeakHashMap會在這時候移除沒用的條目來避免保存無限制增長的沒有意義的弱引用八堡。

引用隊列可以很容易地實現跟蹤不需要的引用樟凄。當你在構造WeakReference時傳入一個ReferenceQueue對象,當該引用指向的對象被標記為垃圾的時候兄渺,這個引用對象會自動地加入到引用隊列里面缝龄。接下來,你就可以在固定的周期挂谍,處理傳入的引用隊列叔壤,比如做一些清理工作來處理這些沒有用的引用對象。

參考文章:
http://www.cnblogs.com/dolphin0520/p/3784171.html 基礎篇
https://droidyue.com/blog/2014/10/12/understanding-weakreference-in-java/ 深入理解篇

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末口叙,一起剝皮案震驚了整個濱河市百新,隨后出現的幾起案子,更是在濱河造成了極大的恐慌庐扫,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仗哨,死亡現場離奇詭異形庭,居然都是意外死亡,警方通過查閱死者的電腦和手機厌漂,發(fā)現死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進店門萨醒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人苇倡,你說我怎么就攤上這事富纸。” “怎么了旨椒?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵晓褪,是天一觀的道長。 經常有香客問我综慎,道長涣仿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任示惊,我火速辦了婚禮好港,結果婚禮上,老公的妹妹穿的比我還像新娘米罚。我一直安慰自己钧汹,他們只是感情好,可當我...
    茶點故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布录择。 她就那樣靜靜地躺著拔莱,像睡著了一般碗降。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辨宠,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天遗锣,我揣著相機與錄音,去河邊找鬼嗤形。 笑死精偿,一個胖子當著我的面吹牛,可吹牛的內容都是我干的赋兵。 我是一名探鬼主播笔咽,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼霹期!你這毒婦竟也來了叶组?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤历造,失蹤者是張志新(化名)和其女友劉穎甩十,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體吭产,經...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡侣监,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了臣淤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片橄霉。...
    茶點故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖邑蒋,靈堂內的尸體忽然破棺而出姓蜂,到底是詐尸還是另有隱情,我是刑警寧澤医吊,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布钱慢,位于F島的核電站,受9級特大地震影響遮咖,放射性物質發(fā)生泄漏滩字。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一御吞、第九天 我趴在偏房一處隱蔽的房頂上張望麦箍。 院中可真熱鬧,春花似錦陶珠、人聲如沸挟裂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诀蓉。三九已至栗竖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間渠啤,已是汗流浹背狐肢。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沥曹,地道東北人份名。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像妓美,于是被迫代替她去往敵國和親僵腺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,982評論 2 361

推薦閱讀更多精彩內容