成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java對(duì)象引用四個(gè)級(jí)別(強(qiáng)、軟、弱、虛)

liuhh / 787人閱讀

摘要:為了使程序能更加靈活地控制對(duì)象的生命周期,從版本開始,把對(duì)象的引用級(jí)別分為了以下四種。如技術(shù)棧這就是強(qiáng)引用,持有了這個(gè)對(duì)象的存儲(chǔ)地址的引用。

最近,高級(jí)Java技術(shù)棧微信群中,有一些猿友在討論JVM中對(duì)象的周期問題,有談到引用的級(jí)別,現(xiàn)在為大家做個(gè)總結(jié)吧,雖然大多數(shù)公司并沒有意識(shí)或者用到這些引用,但了解這些基本概念對(duì)熟悉整個(gè)垃圾回收機(jī)制和面試是非常有幫助的。

為了使程序能更加靈活地控制對(duì)象的生命周期,從JDK1.2版本開始,JDK把對(duì)象的引用級(jí)別分為了以下四種。

這4種級(jí)別由高到低依次為:

強(qiáng)引用(StrongReference)

強(qiáng)引用就是我們平常最基本的對(duì)象引用,如果是強(qiáng)引用,那回收器不會(huì)回收帶有強(qiáng)引用的對(duì)象。即使內(nèi)存不足拋出OutOfMemoryError異常也不會(huì)回收強(qiáng)引用對(duì)象,存在即合理吧。

如:

User user = new User("Java技術(shù)棧");

這就是強(qiáng)引用,user持有了這個(gè)對(duì)象的存儲(chǔ)地址的引用。

軟引用(SoftReference)

一個(gè)對(duì)象只有軟引用,如果內(nèi)存空間足夠情況下垃圾回收器就不會(huì)回收它,如果內(nèi)存空間不夠了就會(huì)對(duì)這些只有軟引用的對(duì)象進(jìn)行回收。只要垃圾回收器沒有回收,該軟引用對(duì)象就可以繼續(xù)被程序使用。

所以軟引用一般用來實(shí)現(xiàn)一些內(nèi)存敏感的緩存,只要內(nèi)存空間足夠,對(duì)象就會(huì)保持不被回收掉。

弱引用(WeakReference)

弱引用的對(duì)象具有更短暫的生命周期,在垃圾回收器線程掃描它所管轄的內(nèi)存區(qū)域的過程中,一旦發(fā)現(xiàn)了只具有弱引用的對(duì)象,不管當(dāng)前內(nèi)存空間足夠與否,都會(huì)回收它的內(nèi)存。不過,由于垃圾回收器是一個(gè)優(yōu)先級(jí)很低的線程,因此不一定會(huì)很快發(fā)現(xiàn)那些只具有弱引用的對(duì)象。

弱引用可以用來實(shí)現(xiàn)一些規(guī)范化映射,如WeakHashMap,當(dāng)key或者value不再被引用時(shí)可以自動(dòng)被回收。

虛引用(PhantomReference)

虛引用顧名思義就是形同虛設(shè),虛引用并不決定對(duì)象的生命周期,如果一個(gè)對(duì)象僅持有虛引用,那么它就和沒有任何引用一樣,在任何時(shí)候都可能被垃圾回收器回收。

虛引用主要用來跟蹤對(duì)象被垃圾回收器回收的活動(dòng),虛引用必須和引用隊(duì)列(ReferenceQueue)聯(lián)合使用,當(dāng)垃圾回收器準(zhǔn)備回收一個(gè)對(duì)象時(shí),如果發(fā)現(xiàn)它還有虛引用,就會(huì)在回收對(duì)象的內(nèi)存之前,把這個(gè)虛引用加入到與之關(guān)聯(lián)的引用隊(duì)列中。

下面通過一張表格來說明它們的回收時(shí)間、用途。

引用類型 回收時(shí)間 用途
強(qiáng)引用 永不回收 普通對(duì)象引用
軟引用 內(nèi)在不足回收 緩存對(duì)象
弱引用 垃圾回收時(shí) 緩存對(duì)象
虛引用 不確定 不確定

不管這些東西平時(shí)有沒有用到,我們都必須了解這些機(jī)制,這對(duì)個(gè)人的知識(shí)面及拓展是非常有幫助的。

推薦閱讀

干貨:Spring Boot & Cloud 最強(qiáng)技術(shù)教程

工具:推薦一款在線創(chuàng)作流程圖、思維導(dǎo)圖軟件

分享Java干貨,高并發(fā)編程,熱門技術(shù)教程,微服務(wù)及分布式技術(shù),架構(gòu)設(shè)計(jì),區(qū)塊鏈技術(shù),人工智能,大數(shù)據(jù),Java面試題,以及前沿?zé)衢T資訊等。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/71386.html

相關(guān)文章

  • 引用都答不上,憑什么說你是Java服務(wù)端開發(fā)

    摘要:弱引用弱引用比軟引用更弱,被弱引用關(guān)聯(lián)的對(duì)象只能存活到發(fā)生下一次垃圾回收之前,也就是說當(dāng)發(fā)生時(shí),無論當(dāng)前內(nèi)存是否足夠,都會(huì)被回收掉。這是最終的狀態(tài),不能再變?yōu)槠渌鼱顟B(tài)。如下圖所示對(duì)象都是可被回收的。 【干貨點(diǎn)】看完該篇文章,就基本可以解答面試熱點(diǎn)【談?wù)剬?duì)Java中幾種引用的理解】了。 大家都知道我公眾號(hào)的副業(yè)是 showImg(https://segmentfault.com/img/...

    mozillazg 評(píng)論0 收藏0
  • Java 對(duì)象與垃圾回收

    摘要:當(dāng)一個(gè)對(duì)象被一個(gè)或一個(gè)以上的引用變量所引用時(shí),它處于可達(dá)狀態(tài),不可能被系統(tǒng)垃圾回收機(jī)制回收。虛引用主要用于跟蹤對(duì)象被垃圾回收的狀態(tài),虛引用不能單獨(dú)使用,虛引用必須和引用隊(duì)列聯(lián)合使用。 當(dāng)程序創(chuàng)建對(duì)象、數(shù)組等引用類型實(shí)體時(shí),系統(tǒng)都會(huì)在堆內(nèi)存中為之分配一塊內(nèi)存區(qū),對(duì)象就保存在這塊內(nèi)存區(qū)中,當(dāng)這塊內(nèi)存不再被任何引用變量引用時(shí),這塊內(nèi)存就變成垃圾,等待垃圾回收機(jī)制進(jìn)行回收。垃圾回收機(jī)制具有如下...

    booster 評(píng)論0 收藏0
  • Java中的四種引用強(qiáng)引用、引用引用、引用

    摘要:在之后,對(duì)引用的概念進(jìn)行了擴(kuò)充,將引用分為強(qiáng)引用軟引用弱引用虛引用種,這種引用強(qiáng)度依次逐漸減弱。軟引用是用來描述一些還有用但并非必需的對(duì)象。虛引用也稱為幽靈引用或者幻影引用,它是最弱的一種引用關(guān)系。 以下內(nèi)容摘自《深入理解Java虛擬機(jī) JVM高級(jí)特性與最佳實(shí)踐》第2版,強(qiáng)烈推薦沒有看過的同學(xué)閱讀,讀完的感覺就是原來學(xué)的都是些什么瘠薄東西(╯‵□′)╯︵┴─┴ 在JDK1.2以前,Ja...

    wwolf 評(píng)論0 收藏0
  • java:強(qiáng)引用,引用,引用引用

    摘要:強(qiáng)引用如果一個(gè)對(duì)象具有強(qiáng)引用垃圾回收器絕不會(huì)回收它當(dāng)內(nèi)存空間不足時(shí)虛擬機(jī)寧愿拋出錯(cuò)誤使程序異常終止也不會(huì)靠隨意回收具有強(qiáng)引用的對(duì)象來解決內(nèi)存不足問題軟引用如果內(nèi)存空間充足垃圾回收器就不會(huì)回收它如果內(nèi)存空間不足就會(huì)回收這些對(duì)象的內(nèi)存只要垃圾回 強(qiáng)引用 如果一個(gè)對(duì)象具有強(qiáng)引用,垃圾回收器絕不會(huì)回收它.當(dāng)內(nèi)存空間不足時(shí),java虛擬機(jī)寧愿拋出OutOfMemoryError錯(cuò)誤,使程序異常終...

    fengxiuping 評(píng)論0 收藏0
  • java面向對(duì)象(下)

    內(nèi)部類 內(nèi)部類主要作用 內(nèi)部類提供了更好的封裝,可以吧內(nèi)部類隱藏在外部類之內(nèi),不允許同一個(gè)包中的其他類訪問該類。 內(nèi)部類成員可以直接訪問外部類的私有數(shù)據(jù),因?yàn)閮?nèi)部類被當(dāng)成其外部類成員,同一個(gè)類的成員之間可以互相訪問,但外部類不能訪問內(nèi)部類的實(shí)現(xiàn)細(xì)節(jié)。 匿名內(nèi)部類適合用于創(chuàng)建那些僅需要使用一次的類。 定義內(nèi)部類與外部類的語法大致相同,內(nèi)部類除需要定義在其他類里面之外,還有兩點(diǎn)區(qū)別: 內(nèi)...

    awesome23 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

liuhh

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<