Java中幾個(gè)Reference常見(jiàn)的作用詳解
前言
Java中幾個(gè)Reference作用,也是面試的時(shí)候經(jīng)常問(wèn)到的問(wèn)題,以前總是記一次忘一次,現(xiàn)在有時(shí)間,索性寫(xiě)個(gè)demo測(cè)試一把。下面來(lái)一起看看詳細(xì)的介紹:
具體代碼如下:

JVM 參數(shù): -Xmx10m -Xms5m -XX:+PrintGC
SoftReference的時(shí)候:

weakReference的時(shí)候:

StrongReference:
由于strong是JVM默認(rèn)的,這里就不做了,直接就是一點(diǎn)都不會(huì)被回收,直至OOM
PhantomReference:
虛引用并不會(huì)改變內(nèi)存回收機(jī)制,只是在回收的時(shí)候放到ReferenceQueue里通知用戶可做一些額外操作,比如打印日志等
如下代碼,本質(zhì)上byte[]還是一個(gè)強(qiáng)引用的。

輸出:

總結(jié)一下:
- StrongReference:JVM默認(rèn),除非GC時(shí)已無(wú)任何對(duì)象引用,否則即便是OOM也不會(huì)回收
- WeakReference:一旦沒(méi)有被引用,GC時(shí)就會(huì)回收
- SoftReference:和strong一樣,除非GC時(shí)已無(wú)任何對(duì)象引用,否則....在即將OOM前才會(huì)被回收,所以SoftReference一般可以用來(lái)做緩存
- sun.nio.ch.Util中就有private static ThreadLocal<SoftReference<SelectorWrapper>> localSelector
- = new ThreadLocal<SoftReference<SelectorWrapper>>();
- 用于臨時(shí)的Selector。
- PhantomReference:通過(guò)構(gòu)造函數(shù)的ReferenceQueue作為一個(gè)通知,用來(lái)在對(duì)象被回收時(shí)做額外的操作。
好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
springboot項(xiàng)目事務(wù)標(biāo)簽驗(yàn)證
本文主要介紹了springboot項(xiàng)目事務(wù)標(biāo)簽驗(yàn)證,文中通過(guò)示例代碼介紹的非常詳細(xì),詳細(xì)的介紹了不加事務(wù)標(biāo)簽和加事物標(biāo)簽的使用,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07
Go Java算法之外觀數(shù)列實(shí)現(xiàn)方法示例詳解
這篇文章主要為大家介紹了Go Java算法外觀數(shù)列實(shí)現(xiàn)的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
SpringBoot+Vue添加騰訊云人臉識(shí)別的項(xiàng)目實(shí)踐
人臉識(shí)別是一種基于人臉特征進(jìn)行身份認(rèn)證和識(shí)別的技術(shù),本文主要介紹了SpringBoot+Vue添加騰訊云人臉識(shí)別的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08
Java實(shí)戰(zhàn)之實(shí)現(xiàn)文件資料上傳并生成縮略圖
這篇文章主要介紹了通過(guò)Java實(shí)現(xiàn)文件資料的上傳并生成一個(gè)縮略圖,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定的幫助,感興趣的小伙伴可以了解一下2021-12-12
Java實(shí)現(xiàn)添加條碼或二維碼到Word文檔
這篇文章主要介紹了如何在Word文檔中添加條碼、二維碼。可在文檔正文段落中添加,也可在頁(yè)眉頁(yè)腳中添加,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧2022-05-05
如何通過(guò)Java監(jiān)聽(tīng)MySQL數(shù)據(jù)的變化
對(duì)于二次開(kāi)發(fā)來(lái)說(shuō),很大一部分就找找文件和找數(shù)據(jù)庫(kù)的變化情況,下面這篇文章主要給大家介紹了關(guān)于如何通過(guò)Java監(jiān)聽(tīng)MySQL數(shù)據(jù)的變化的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03
Java鏈表元素查找實(shí)現(xiàn)原理實(shí)例解析
這篇文章主要介紹了Java鏈表元素查找實(shí)現(xiàn)原理實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07

