真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java弱引用的理解與使用

這篇文章主要介紹“Java弱引用的理解與使用”,在日常操作中,相信很多人在Java弱引用的理解與使用問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Java弱引用的理解與使用”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

拜城網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)成立于2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

在Java里, 當(dāng)一個(gè)對(duì)象o被創(chuàng)建時(shí), 它被放在Heap里. 當(dāng)GC運(yùn)行的時(shí)候, 如果發(fā)現(xiàn)沒(méi)有任何引用指向o, o就會(huì)被回收以騰出內(nèi)存空間. 或者換句話說(shuō), 一個(gè)對(duì)象被回收, 必須滿足兩個(gè)條件: 1)沒(méi)有任何引用指向它 2)GC被運(yùn)行.

在現(xiàn)實(shí)情況寫(xiě)代碼的時(shí)候, 我們往往通過(guò)把所有指向某個(gè)對(duì)象的referece置空來(lái)保證這個(gè)對(duì)象在下次GC運(yùn)行的時(shí)候被回收 (可以用java -verbose:gc來(lái)觀察gc的行為)

Object c = new Car();

c=null;

但是, 手動(dòng)置空對(duì)象對(duì)于程序員來(lái)說(shuō), 是一件繁瑣且違背自動(dòng)回收的理念的. 對(duì)于簡(jiǎn)單的情況, 手動(dòng)置空是不需要程序員來(lái)做的, 因?yàn)樵趈ava中, 對(duì)于簡(jiǎn)單對(duì)象, 當(dāng)調(diào)用它的方法執(zhí)行完畢后, 指向它的引用會(huì)被從stack中popup, 所以他就能在下一次GC執(zhí)行時(shí)被回收了.

但是, 也有特殊例外. 當(dāng)使用cache的時(shí)候, 由于cache的對(duì)象正是程序運(yùn)行需要的, 那么只要程序正在運(yùn)行, cache中的引用就不會(huì)被GC給(或者說(shuō), cache中的reference擁有了和主程序一樣的life cycle). 那么隨著cache中的reference越來(lái)越多, GC無(wú)法回收的object也越來(lái)越多, 無(wú)法被自動(dòng)回收. 當(dāng)這些object需要被回收時(shí), 回收這些object的任務(wù)只有交給程序編寫(xiě)者了. 然而這卻違背了GC的本質(zhì)(自動(dòng)回收可以回收的objects).

所以, java中引入了weak reference. 相對(duì)于前面舉例中的strong reference:

Object c = new Car(); //只要c還指向car object, car object就不會(huì)被回收

當(dāng)一個(gè)對(duì)象僅僅被weak reference指向, 而沒(méi)有任何其他strong reference指向的時(shí)候, 如果GC運(yùn)行, 那么這個(gè)對(duì)象就會(huì)被回收. weak reference的語(yǔ)法是:

WeakReference weakCar = new WeakReference(Car)(car);

當(dāng)要獲得weak reference引用的object時(shí), 首先需要判斷它是否已經(jīng)被回收:

weakCar.get();

如果此方法為空, 那么說(shuō)明weakCar指向的對(duì)象已經(jīng)被回收了。

到此,關(guān)于“Java弱引用的理解與使用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!


分享標(biāo)題:Java弱引用的理解與使用
URL分享:http://www.weahome.cn/article/iheheh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部