Java 的強引用钢坦、弱引用、軟引用啥酱、虛引用

一爹凹、說明

??筆記主要是記錄一些本人在開發(fā)當(dāng)中的學(xué)習(xí)和使用筆記。筆記內(nèi)容包含一些本人覺得重要的知識點镶殷、本人易犯的錯誤等禾酱。
??由于本人水平有限,其中出現(xiàn)的錯誤或者不合理的地方望各位讀者多多包含绘趋,并指出其中不合理和錯誤的地方颤陶,以便我來修正。謝謝陷遮!

二滓走、筆記時間

??2018年12月24日

三、簡述

??本文主要講述Java編程中變量定義的幾種方式帽馋,包括強引用搅方、弱引用、軟引用绽族、虛引用姨涡。
??本文參考:https://www.cnblogs.com/gudi/p/6403953.html,感謝作者的技術(shù)共享吧慢!

四涛漂、詳情

1 簡介

??我們平常在Java編程中,常常不會特別注意軟件的性能問題检诗,往往在必須優(yōu)化的情況匈仗,我們才會進(jìn)行性能優(yōu)化。
??變量定義是Java編程中最基層的知識逢慌,平常我們都是采用強引用來定義變量锚沸。這篇文章除了介紹我們常用的強引用之外,另外幾種不常用的弱引用涕癣、軟引用、虛引用本文都會一一進(jìn)行說明前标。

2 引用的幾種方式

2.1 強引用(StrongReference)

??我們平常新建的對象都是屬于強引用坠韩,這是一種最常用的變量定義方式。
??優(yōu)劣勢:強引用的優(yōu)勢就是他的劣勢炼列,強引用在無論在什么情況下gc都不會回收它(對象)只搁,直到引用的生命周期結(jié)束(對象不存在引用),才會被gc回收俭尖。但是我們可以通過設(shè)置對象為空(對象不存在引用)來提高gc回收該引用的概率氢惋。
??之所以說他的優(yōu)勢就是他的劣勢洞翩,是根據(jù)使用場景來區(qū)分的。某些場景下變量使用很頻繁焰望,所以我們希望變量一直存在與應(yīng)用內(nèi)存中骚亿,不被gc無故回收,這樣也就不會出現(xiàn)頻繁新建引用導(dǎo)致大量消耗性能的情況熊赖;但是如果變量一直不能被gc回收来屠,這樣就會導(dǎo)致內(nèi)存一直被占用,甚至?xí)?dǎo)致OOM震鹉、內(nèi)存泄漏等問題俱笛。
??使用方式如下方式:

//強引用
String str =  "this is StrongReference!"传趾;
Object obj = new Object(); 

//提高gc回收概率
str = null;
obj = null

2.2 軟引用(SoftReference)

??優(yōu)劣勢:軟引用只有在內(nèi)存不足時迎膜,它(對象)才會被gc回收。也就是說如果內(nèi)存充足浆兰,gc就永遠(yuǎn)不會回收它磕仅。
??軟引用可以和ReferenceQueue聯(lián)合使用,如果軟引用所引用的對象被垃圾回收器回收镊讼,Java虛擬機就會把這個軟引用加入到與之關(guān)聯(lián)的引用隊列(ReferenceQueue)中宽涌。
??使用方式如下方式:

//強引用
String str = new String("abc"); 

// 軟引用
SoftReference<String> softRef = new SoftReference<String>(str);

//使用,被回收后值為空
String value = softRef.get();

2.3 弱引用(WeakReference)

??優(yōu)劣勢:弱引用只要gc都會被垃圾回收器回收蝶棋。也就是說弱引用的生命周期比軟引用更短卸亮,但垃圾回收器是一個優(yōu)先級很低的線程,因此不一定會很快就會被回收玩裙。
??弱引用可以和ReferenceQueue聯(lián)合使用兼贸,如果弱引用所引用的對象被垃圾回收器回收,Java虛擬機就會把這個弱引用加入到與之關(guān)聯(lián)的引用隊列(ReferenceQueue)中吃溅。
??使用方式如下方式:

//強引用
int str = new String("abc"); 

// 弱引用
WeakReference<String> weakRef=new WeakReference<String>(str);

//使用溶诞,被回收后值為空
String value = weakRef.get();

2.4 虛引用(PhantomReference)

??優(yōu)劣勢:“虛引用和沒有任何引用一樣,在任何時候都可能被垃圾回收器回收决侈。虛引用并不會決定對象的生命周期螺垢。
??虛引用主要用來跟蹤對象被垃圾回收器回收的活動。虛引用必須和ReferenceQueue聯(lián)合使用赖歌。垃圾回收器會在回收對象之前枉圃,把這個虛引用加入到與之關(guān)聯(lián)的引用隊列(ReferenceQueue)中。

3 總結(jié)

??這四種引用不易被回收的優(yōu)先級為:強引用 > 軟引用 > 弱引用 > 虛引用庐冯。也就是說優(yōu)先級越高越難被gc回收孽亲,優(yōu)先級越低越易被gc回收。其中軟引用和弱引用最常在緩存模式中使用展父。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末返劲,一起剝皮案震驚了整個濱河市玲昧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌篮绿,老刑警劉巖孵延,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異搔耕,居然都是意外死亡隙袁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進(jìn)店門弃榨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來菩收,“玉大人,你說我怎么就攤上這事鲸睛∧榷” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵官辈,是天一觀的道長箱舞。 經(jīng)常有香客問我,道長拳亿,這世上最難降的妖魔是什么晴股? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮肺魁,結(jié)果婚禮上电湘,老公的妹妹穿的比我還像新娘。我一直安慰自己鹅经,他們只是感情好寂呛,可當(dāng)我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瘾晃,像睡著了一般贷痪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蹦误,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天劫拢,我揣著相機與錄音,去河邊找鬼强胰。 笑死尚镰,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的哪廓。 我是一名探鬼主播,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼初烘,長吁一口氣:“原來是場噩夢啊……” “哼涡真!你這毒婦竟也來了分俯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤哆料,失蹤者是張志新(化名)和其女友劉穎缸剪,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體东亦,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡杏节,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了典阵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奋渔。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖壮啊,靈堂內(nèi)的尸體忽然破棺而出嫉鲸,到底是詐尸還是另有隱情,我是刑警寧澤歹啼,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布玄渗,位于F島的核電站,受9級特大地震影響狸眼,放射性物質(zhì)發(fā)生泄漏藤树。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一拓萌、第九天 我趴在偏房一處隱蔽的房頂上張望岁钓。 院中可真熱鬧,春花似錦司志、人聲如沸甜紫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽囚霸。三九已至,卻和暖如春激才,著一層夾襖步出監(jiān)牢的瞬間拓型,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工瘸恼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留劣挫,地道東北人。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓东帅,卻偏偏與公主長得像压固,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子靠闭,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,585評論 2 359

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