關(guān)于ThreadLocal的釋疑

強(qiáng)引用

如果一個(gè)對(duì)象具有強(qiáng)引用,那么絕不會(huì)被垃圾回收器回收密浑,即使拋出OO異常

軟引用

如果一個(gè)對(duì)象具有軟引用,那么就在垃圾回收器之后內(nèi)存依然不足的情況下被垃圾回收器回收。對(duì)應(yīng)于生活中的食之無(wú)味棄之可惜之物品的設(shè)定奢入,如果空間足夠則不做丟棄,如果空間清掃后依然不足則被丟棄媳叨。

弱引用

如果一個(gè)對(duì)象具有弱引用腥光,那么就在垃圾回收器的線(xiàn)程掃描時(shí)必定被干掉,不過(guò)由于垃圾回收器線(xiàn)程優(yōu)先級(jí)比較低糊秆,所以弱引用的對(duì)象也不會(huì)那么容易被發(fā)現(xiàn)

GC ROOT

虛擬機(jī)(JVM)棧中引用對(duì)象

方法區(qū)中的類(lèi)靜態(tài)屬性引用對(duì)象

方法區(qū)中常量引用的對(duì)象(final 的常量值)

本地方法棧JNI的引用對(duì)象

由來(lái)

我們會(huì)在開(kāi)發(fā)中遇到一種情形武福,如果需要用一個(gè)全局靜態(tài)變量Map來(lái)保存線(xiàn)程和與之對(duì)應(yīng)的值 比如 Map map = HashMap<>,但隨之帶來(lái)的一個(gè)問(wèn)題就是我們?nèi)绾卧诰€(xiàn)程結(jié)束之后把與之對(duì)應(yīng)的值刪除呢痘番?ThreadLocal就是為了解決這種問(wèn)題存在的捉片,且對(duì)用戶(hù)透明

ThreadLocal源碼的大致思路如下:每個(gè)Thread里面保存有一個(gè)TheadLocalMap對(duì)象平痰,里面對(duì)應(yīng)的Entry 的key為T(mén)hreadLocal的弱引用,所以我們能在當(dāng)前線(xiàn)程得到ThreadLocal對(duì)應(yīng)的值……引出一個(gè)問(wèn)題界睁,為什么要用弱引用來(lái)作為key??

(實(shí)線(xiàn)為強(qiáng)引用觉增,虛線(xiàn)為弱引用)?


當(dāng)圖中ThreadLocal實(shí)例被設(shè)置為null之后沒(méi)有任何強(qiáng)引用指向ThreadLocal,那key對(duì)應(yīng)的弱引用被回收( 一開(kāi)始的認(rèn)知總會(huì)感覺(jué)翻斟,用一個(gè)weakreference去引用一個(gè)對(duì)象一點(diǎn)都不靠譜逾礁,畢竟該引用指向的對(duì)象,在GC的時(shí)候就會(huì)被回收访惜,完全沒(méi)有任何保證嘹履。針對(duì)上面這個(gè)想法,因?yàn)橐粋€(gè)對(duì)象可能會(huì)存在多個(gè)引用參與债热,所以應(yīng)該更多是強(qiáng)弱同時(shí)去引用某個(gè)對(duì)象砾嫉,只有當(dāng)所有強(qiáng)引用都失效之后,你的這個(gè)弱引用才有風(fēng)險(xiǎn)被回收掉窒篱。)焕刮,但是value卻存在一條由Current Thread ref引出的強(qiáng)引用,此時(shí)value是不可能被GC掉的墙杯,直到線(xiàn)程結(jié)束,引用鏈被斷開(kāi)配并,對(duì)象才有可能被回收。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末高镐,一起剝皮案震驚了整個(gè)濱河市溉旋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嫉髓,老刑警劉巖观腊,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異算行,居然都是意外死亡梧油,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)州邢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)儡陨,“玉大人,你說(shuō)我怎么就攤上這事偷霉。” “怎么了褐筛?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵类少,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我渔扎,道長(zhǎng)硫狞,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮残吩,結(jié)果婚禮上财忽,老公的妹妹穿的比我還像新娘。我一直安慰自己泣侮,他們只是感情好即彪,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著活尊,像睡著了一般隶校。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蛹锰,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天深胳,我揣著相機(jī)與錄音,去河邊找鬼铜犬。 笑死舞终,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的癣猾。 我是一名探鬼主播敛劝,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼煎谍!你這毒婦竟也來(lái)了攘蔽?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤呐粘,失蹤者是張志新(化名)和其女友劉穎满俗,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體作岖,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡唆垃,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了痘儡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辕万。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖沉删,靈堂內(nèi)的尸體忽然破棺而出渐尿,到底是詐尸還是另有隱情,我是刑警寧澤矾瑰,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布砖茸,位于F島的核電站,受9級(jí)特大地震影響殴穴,放射性物質(zhì)發(fā)生泄漏凉夯。R本人自食惡果不足惜货葬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望劲够。 院中可真熱鬧震桶,春花似錦、人聲如沸征绎。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)炒瘸。三九已至淤堵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間顷扩,已是汗流浹背拐邪。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留隘截,地道東北人扎阶。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像婶芭,于是被迫代替她去往敵國(guó)和親东臀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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

  • 前言 ThreadLocal很多同學(xué)都搞不懂是什么東西,可以用來(lái)干嘛。但面試時(shí)卻又經(jīng)常問(wèn)到忘朝,所以這次我和大家一起學(xué)...
    liangzzz閱讀 12,423評(píng)論 14 228
  • 1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虛擬機(jī)(JVM)垃圾回收器提供...
    簡(jiǎn)欲明心閱讀 89,392評(píng)論 17 311
  • 這篇文章是我之前翻閱了不少的書(shū)籍以及從網(wǎng)絡(luò)上收集的一些資料的整理赁濒,因此不免有一些不準(zhǔn)確的地方,同時(shí)不同JDK版本的...
    高廣超閱讀 15,545評(píng)論 3 83
  • 南峰居士閱讀 327評(píng)論 1 0
  • 記得看過(guò)一個(gè)日本的綜藝節(jié)目 內(nèi)容是對(duì)年輕的自己說(shuō)一段話(huà) 一個(gè)爺爺說(shuō)了很多搞笑的事情 接著他有點(diǎn)哽咽的說(shuō) 你會(huì)在工作...
    半夏貓閱讀 194評(píng)論 0 0