大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專(zhuān)注Java教育14年 全國(guó)咨詢(xún)/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 你所不了解的,Java引用的四種方式

你所不了解的,Java引用的四種方式

更新時(shí)間:2019-12-16 15:17:25 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2337次

我們知道在Java中除了基礎(chǔ)的數(shù)據(jù)類(lèi)型以外,其它的都為引用類(lèi)型。 而Java根據(jù)其生命周期的長(zhǎng)短將引用類(lèi)型又分為 強(qiáng)引用、軟引用、弱引用、幻象引用 。

  正常情況下我們平時(shí)基本上我們只用到強(qiáng)引用類(lèi)型,而其他的引用類(lèi)型我們也就在面試中,或者平日閱讀類(lèi)庫(kù)或其他框架源碼的時(shí)候才能見(jiàn)到。

你所不了解的,Java引用的四種方式

  1.強(qiáng)引用

  我們平日里面的用到的new了一個(gè)對(duì)象就是強(qiáng)引用,例如 Object obj = new Object(); 當(dāng)JVM的內(nèi)存空間不足時(shí),寧愿拋出OutOfMemoryError使得程序異常終止也不愿意回收具有 強(qiáng)引用的存活著的對(duì)象 !

  記住是存活著,不可能是你new一個(gè)對(duì)象就永遠(yuǎn)不會(huì)被GC回收。當(dāng)一個(gè)普通對(duì)象沒(méi)有其他引用關(guān)系,只要超過(guò)了引用的作用域或者顯示的將引用賦值為null時(shí),你的對(duì)象就表明不是存活著,這樣就會(huì)可以被GC回收了。當(dāng)然回收的時(shí)間是不一定的具體得看GC回收策略。

  2.軟引用

  軟引用的生命周期比強(qiáng)引用短一些。軟引用是通過(guò) SoftReference 類(lèi)實(shí)現(xiàn)的。

       你所不了解的,Java引用的四種方式

  這樣就是一個(gè)簡(jiǎn)單的軟引用使用方法。通過(guò) get() 方法獲取對(duì)象。當(dāng)JVM認(rèn)為內(nèi)存空間不足時(shí),就回去試圖回收軟引用指向的對(duì)象,也就是說(shuō)在JVM拋出 OutOfMemoryError 之前,會(huì)去清理軟引用對(duì)象。軟引用可以與引用隊(duì)列 (ReferenceQueue) 聯(lián)合使用。

      你所不了解的,Java引用的四種方式

  當(dāng) softObj 軟引用的 obj 被GC回收之后, softObj 對(duì)象就會(huì)被塞到 queue 中,之后我們可以通過(guò)這個(gè)隊(duì)列的 poll() 來(lái)檢查你關(guān)心的對(duì)象是否被回收了,如果隊(duì)列為空,就返回一個(gè) null。反之就返回軟引用對(duì)象也就是 softObj 。

  軟引用一般用來(lái)實(shí)現(xiàn)內(nèi)存敏感的緩存,如果有空閑內(nèi)存就可以保留緩存,當(dāng)內(nèi)存不足時(shí)就清理掉,這樣就保證使用緩存的同時(shí)不會(huì)耗盡內(nèi)存。例如圖片緩存框架中緩存圖片就是通過(guò)軟引用的。

  3.弱引用

  弱引用是通過(guò) WeakReference 類(lèi)實(shí)現(xiàn)的,它的生命周期比軟引用還要短,也是通過(guò) get() 方法獲取對(duì)象。

      你所不了解的,Java引用的四種方式

  在GC的時(shí)候,不管內(nèi)存空間足不足都會(huì)回收這個(gè)對(duì)象,同樣也可以配合 ReferenceQueue 使用,也同樣適用于內(nèi)存敏感的緩存。 ThreadLocal 中的key就用到了弱引用。

  4.幻象引用

  也稱(chēng)虛引用,是通過(guò) PhantomReference 類(lèi)實(shí)現(xiàn)的。任何時(shí)候可能被GC回收,就像沒(méi)有引用一樣。

       你所不了解的,Java引用的四種方式

  無(wú)法通過(guò)虛引用訪問(wèn)對(duì)象的任何屬性或者函數(shù)。那就要問(wèn)了要它有什么用?虛引用僅僅只是提供了一種確保對(duì)象被 finalize 以后來(lái)做某些事情的機(jī)制。比如說(shuō)這個(gè)對(duì)象被回收之后發(fā)一個(gè)系統(tǒng)通知啊啥的。虛引用是必須配合 ReferenceQueue 使用的,具體使用方法和上面提到軟引用的一樣。主要用來(lái)跟蹤對(duì)象被垃圾回收的活動(dòng)。

你所不了解的,Java引用的四種方式

      以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“你所不了解的,Java引用的四種方式”的內(nèi)容,希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。

       相關(guān)文章

  零基礎(chǔ)怎么自學(xué)Java,完整版Java學(xué)習(xí)路線圖

  你還在糾結(jié)學(xué)Java,是自學(xué)還是去培訓(xùn)班嗎

  一個(gè)標(biāo)準(zhǔn)的Java程序員如何進(jìn)階?

  Java學(xué)習(xí)路線清單,快速進(jìn)階Java

  Java編程初學(xué)者要如何進(jìn)階

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 久久精品入口麻豆 | 国产妇乱子伦视频免费 | 欧美在线播放一区二区 | 天天天天天天操 | 成人国产视频在线观看 | 国产毛片a级 | 伊人国产在线播放 | 精品久久久久久久久久中文字幕 | 久久综合亚洲一区二区三区 | www.99爱| 老司机午夜免费视频 | 看真人一级毛片 | 免费播放欧美毛片欧美aaaaa | 日韩二区| 999久久久免费精品国产牛牛 | 日韩欧美亚洲综合 | 亚洲欧美日韩国产精品 | 殴美一级片 | 亚洲欧美日韩国产精品久久 | 国产综合婷婷 | 狠狠色狠狠色综合 | 日日夜操| 99热这里只有精品7 99热这里只有精品8 | 欧美一级在线播放 | 日韩在线操| 99久久国产综合色 | 色噜噜狠狠成人中文小说 | 天天摸夜夜 | 成人欧美一区二区三区在线 | 精品伊人久久久99热这里只 | 久久这里只精品热免费99 | 老司机午夜性大片免费 | 五月国产综合视频在线观看 | 欧美成人免费视频a | 伊人久久婷婷丁香六月综合基地 | 中文字幕国产在线观看 | 日日久| 97国产在线公开免费观看 | 日韩免费一级毛片 | 亚洲麻豆精品 | 91欧美在线 |