自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

四種對象引用之間的區(qū)別是什么?你知道嗎?

開發(fā) 前端
只有當(dāng)JVM判斷內(nèi)存不足的時候,才會試圖回收引用指向的對象。那軟引用通常是用來實現(xiàn)內(nèi)存敏感的一些緩存,如果還有空閑內(nèi)存就可以暫時保留緩存,當(dāng)內(nèi)存不足的時候會清理掉。這樣就可以保證使用緩存的同時,不會耗盡內(nèi)存。

一位工作4年的小伙伴面試被問到這樣一道題,說Java中,4種對象引用之間的區(qū)別是什么?這道面試題問得比較偏門,更多應(yīng)用在一些底層類庫或者是框架中,涉及到的知識點包括JVM、GC等,一般人確實很少關(guān)注。

Java中的4種引用類型主要是指強、軟、弱、虛,

圖片

它們主要是體現(xiàn)對象不同的可達性狀態(tài)和對GC的影響。下面我給大家詳細(xì)地分析一下我對這四種引用類型的理解。

圖片

1、強引用:只要引用關(guān)系還在,對象就永遠(yuǎn)不會被回收。

其實就是指普通對象的引用,只要還有引用關(guān)系存在,就表示對象還活著,垃圾收集器無法回收這一類對象。只有在沒有其他引用關(guān)系或者超過引用作用域,再或者是將對象引用強制賦值為null的情況下,垃圾收集器才會去回收這個對象。

圖片

2、軟引用:非必須存活的對象,JVM會在內(nèi)存溢出前對其進行回收。

是一種相對于強引用來說弱一些的引用??梢宰寣ο蠡砻庖恍├占牟僮?。只有當(dāng)JVM判斷內(nèi)存不足的時候,才會試圖回收引用指向的對象。那軟引用通常是用來實現(xiàn)內(nèi)存敏感的一些緩存,如果還有空閑內(nèi)存就可以暫時保留緩存,當(dāng)內(nèi)存不足的時候會清理掉。這樣就可以保證使用緩存的同時,不會耗盡內(nèi)存。

圖片

3、弱引用:非必須存活的對象,不管內(nèi)存是否夠用,下次GC一定回收。

弱引用是相對于強引用而言的,它是允許存在引用關(guān)聯(lián)的情況下,能被垃圾回收的對象。在垃圾回收器線程掃描它所管轄的內(nèi)存區(qū)域的過程中,一旦發(fā)現(xiàn)只具有弱引用的對象的時候,不管當(dāng)前的內(nèi)存空間是否足夠,垃圾回收器都會回收這個內(nèi)存。

圖片

4、虛引用:等同于沒有引用,對象被回收時會收到通知。

虛引用不會決定對象的生命周期,它提供一種確保對象被finalize以后,去做某些事情的機制。當(dāng)垃圾回收期準(zhǔn)備去回收一個對象的時候,如果發(fā)現(xiàn)他還有虛引用,就會在回收對象的內(nèi)存之前,把這個虛引用加入到與之關(guān)聯(lián)的引用隊列中,程序可以通過判斷引用隊列是否已經(jīng)加入虛引用,來決定被引用對象是否要被垃圾回收器回收。然后,我們就可以在引用對象被回收之前執(zhí)行一些必要的操作。所以,虛引用必須和引用隊列一起使用,

圖片

以上的分享還是比較官方,舉個通俗例子,大家就會更容易理解。

  • 強引用就好比電視劇中的男主角,怎么都死不了。
  • 軟引用就像女主角,雖有一段經(jīng)歷,還是沒走到最后。
  • 弱引用就是男二號,注定用來犧牲的。
  • 虛引用就是路人甲了。

以上就是我對Java中4種引用對象的理解。有興趣的小伙伴,可以更進一步去研究一下。

責(zé)任編輯:武曉燕 來源: Tom彈架構(gòu)
相關(guān)推薦

2024-04-30 09:02:48

2025-02-18 08:11:17

2024-08-20 08:29:55

2024-10-10 16:53:53

守護線程編程

2025-03-11 00:35:00

Spring事件機制

2024-09-02 00:30:41

Go語言場景

2021-04-11 11:20:26

數(shù)字人民幣數(shù)字貨幣區(qū)塊鏈

2025-02-27 08:09:52

2024-01-01 08:25:53

ViewSurface框架

2022-03-13 18:53:31

interfacetypeTypeScript

2023-12-20 08:23:53

NIO組件非阻塞

2015-08-24 09:23:25

2022-06-08 07:34:25

InnoDBdeleteMySQL

2024-05-27 00:00:00

localhostIPv6IPv4

2018-05-21 21:26:59

Apache HiveHbaseSQL

2011-11-24 16:34:39

Java

2019-10-24 07:42:28

Java引用GC

2024-04-22 08:02:34

kafka消息隊列高可用

2021-08-29 18:01:57

HTTP協(xié)議版本

2023-06-01 08:15:04

CentOS紅帽
點贊
收藏

51CTO技術(shù)棧公眾號