新聞中心
Reference在Java中的作用有哪些?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
前言
Java中幾個(gè)Reference作用,也是面試的時(shí)候經(jīng)常問(wèn)到的問(wèn)題,以前總是記一次忘一次,現(xiàn)在有時(shí)間,索性寫個(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
> localSelector - = new ThreadLocal
>(); - 用于臨時(shí)的Selector。
- PhantomReference:通過(guò)構(gòu)造函數(shù)的ReferenceQueue作為一個(gè)通知,用來(lái)在對(duì)象被回收時(shí)做額外的操作。
看完上述內(nèi)容,你們掌握Reference在Java中的作用有哪些的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
新聞名稱:Reference在Java中的作用有哪些-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://fisionsoft.com.cn/article/echje.html