成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Java對象引用四個級別(強、軟、弱、虛)

liuhh / 834人閱讀

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

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

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

這4種級別由高到低依次為:

強引用(StrongReference)

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

如:

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

這就是強引用,user持有了這個對象的存儲地址的引用。

軟引用(SoftReference)

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

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

弱引用(WeakReference)

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

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

虛引用(PhantomReference)

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

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

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

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

不管這些東西平時有沒有用到,我們都必須了解這些機制,這對個人的知識面及拓展是非常有幫助的。

推薦閱讀

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

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

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

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/71386.html

相關(guān)文章

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

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

    mozillazg 評論0 收藏0
  • Java 對象與垃圾回收

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

    booster 評論0 收藏0
  • Java中的四種引用引用、引用、引用、引用

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

    wwolf 評論0 收藏0
  • java:引用,引用,引用引用

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

    fengxiuping 評論0 收藏0
  • java面向對象(下)

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

    awesome23 評論0 收藏0

發(fā)表評論

0條評論

liuhh

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<