Java引用

在Java中引用包括:

  • FinalReference 強引用
  • SoftReference 軟引用
  • WeakReference 弱引用
  • PhantomReference 虛引用

那么為什么會提供這四種引用呢派近,主要原因有:

  • 方便Jvm進行垃圾回收
  • 方便開發(fā)人員使用案疲,開發(fā)人員可以靈活的決定某些對象的生命周期

FinalReference 強引用

類似于 Object o = new Object() 這類的引用酌予,創(chuàng)建一個對象后爷贫,該引用會被保存在JVM棧中诗茎,而且只要強引用存在锭环,垃圾回收器就不會回收掉被引用的對象驮肉。

強引用的例子比比皆是涣雕,因為在日常開發(fā)中我們是會經(jīng)常去new一個對象的全释,而該new出來的對象便是強引用的装处,也就是說只要該引用存在,垃圾回收器就不會回收掉浸船。 【劃重點:JVM怎么知道引用在不在妄迁?】

JVM怎么知道引用在不在
關(guān)于JVM怎么知道引用在不在寝蹈,這就涉及到了JVM的可達性分析算法了 JVM的可達性分析算法的簡單思路就是通過一系列GC Roots作為出發(fā)點,向下搜索登淘,搜索所走過的路徑稱為引用鏈箫老,當一個對象到GC Roots沒有任何引用鏈,即表明從GC Roots到這個對象不可達時形帮,證明此對象不可用槽惫,可被回收。

SoftReference 軟引用

軟引用關(guān)聯(lián)的對象辩撑,在內(nèi)存不夠的情況下界斜,會把這些軟引用關(guān)聯(lián)的對象列入垃圾回收范圍中,然后進行回收合冀,也就是說軟引用并非是完全安全的各薇,在內(nèi)存不夠的情況下是會被垃圾回收器回收掉的。

部分是使用軟引用來保存從數(shù)據(jù)庫中取出的數(shù)據(jù)君躺,具體是做了一個中間層的封裝峭判,該中間層的作用就是在get出數(shù)據(jù)的時候會去判斷數(shù)據(jù)是否為null,如果是為null再次從數(shù)據(jù)庫讀取棕叫,讀取后再放入軟引用的集合中林螃,這樣的做法是可以避免內(nèi)存溢出。

WeakReference 弱引用

弱引用比軟引用更弱俺泣,被弱引用關(guān)聯(lián)的對象只能存活到發(fā)生下一次垃圾回收之前疗认,也就是說當發(fā)生GC時,無論當前內(nèi)存是否足夠伏钠,都會被回收掉横漏。

PhantomReference 虛引用

虛引用和上面不同的地方在于,一個對象是否有虛引用的存在熟掂,完全不會對其生存時間構(gòu)成如何影響缎浇,并且也無法通過虛引用來獲取一個對象的實例,也就是說跟沒有引用與之關(guān)聯(lián)一樣赴肚,在任何時候都可能被垃圾回收器回收素跺。
那么這樣就很容易產(chǎn)生疑問了,虛引用的作用又是什么呢誉券?
作用就是能在這個對象被收集器回收時收到一個系統(tǒng)通知指厌,實現(xiàn)追蹤垃圾收集器的回收動作,比如在對象被回收的時候横朋,會調(diào)用該對象的finalize方法仑乌。

ReferenceQueue 引用隊列
ReferenceQueue 引用其實也可以歸納為引用中的一員,可以和上述三種引用類型組合使用【軟引用、弱引用晰甚、虛引用】衙传。
那么它有何作呢?
在創(chuàng)建Reference時厕九,手動將Queue注冊到Reference中蓖捶,而當該Reference所引用的對象被垃圾收集器回收時,JVM會將該Reference放到該隊列中扁远,而我們便可以對該隊列做些其他業(yè)務(wù)俊鱼,相當于一種通知機制。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末畅买,一起剝皮案震驚了整個濱河市并闲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌谷羞,老刑警劉巖帝火,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異湃缎,居然都是意外死亡犀填,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門嗓违,熙熙樓的掌柜王于貴愁眉苦臉地迎上來九巡,“玉大人,你說我怎么就攤上這事蹂季∶峁悖” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵乏盐,是天一觀的道長佳窑。 經(jīng)常有香客問我制恍,道長父能,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任净神,我火速辦了婚禮何吝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鹃唯。我一直安慰自己爱榕,他們只是感情好,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布坡慌。 她就那樣靜靜地躺著黔酥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上跪者,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天棵帽,我揣著相機與錄音,去河邊找鬼渣玲。 笑死逗概,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的忘衍。 我是一名探鬼主播逾苫,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼枚钓!你這毒婦竟也來了铅搓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤搀捷,失蹤者是張志新(化名)和其女友劉穎狸吞,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體指煎,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡蹋偏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了至壤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片威始。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖像街,靈堂內(nèi)的尸體忽然破棺而出黎棠,到底是詐尸還是另有隱情,我是刑警寧澤镰绎,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布脓斩,位于F島的核電站,受9級特大地震影響畴栖,放射性物質(zhì)發(fā)生泄漏随静。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一吗讶、第九天 我趴在偏房一處隱蔽的房頂上張望燎猛。 院中可真熱鬧,春花似錦照皆、人聲如沸重绷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昭卓。三九已至愤钾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間候醒,已是汗流浹背绰垂。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留火焰,地道東北人劲装。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像昌简,于是被迫代替她去往敵國和親占业。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

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