欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java的四種引用方式

 更新時(shí)間:2021年10月28日 17:20:27   作者:Android帥次  
這篇文章主要介紹了Java的四種引用方式,Java的引用方式主要包括強(qiáng)引用、軟引用、弱引用、虛引用;下面文章便來(lái)詳細(xì)介紹這四種引用方式,需要的朋友可以參考一下

1.強(qiáng)引用(StrongReference)

  • 使用最普遍的引用。
  • 只要引用鏈沒(méi)有斷開(kāi),強(qiáng)引用就不會(huì)斷開(kāi)。- 當(dāng)內(nèi)存空間不足,拋出OutOfMemoryError終止程序也不會(huì)回收具有強(qiáng)引用的對(duì)象。
  • 通過(guò)將對(duì)象設(shè)置為null來(lái)弱化引用,使其被回收
Object object = new Object();
String str = "scc";
//都是強(qiáng)引用

2.軟引用(SoftReference)

  • 對(duì)象處在有用但非必須的狀態(tài)
  • 只有當(dāng)內(nèi)存空間不足時(shí), GC會(huì)回收該引用的對(duì)象的內(nèi)存。
  • 可以用來(lái)實(shí)現(xiàn)高速緩存(作用)--比如網(wǎng)頁(yè)緩存、圖片緩存
// 注意:wrf這個(gè)引用也是強(qiáng)引用,它是指向SoftReference這個(gè)對(duì)象的,
// 這里的軟引用指的是指向new String("str")的引用,也就是SoftReference類(lèi)中T
SoftReference<String> wrf = new SoftReference<String>(new String("str"));

3.弱引用(WeakReference)

弱引用就是只要JVM垃圾回收器發(fā)現(xiàn)了它,就會(huì)將之回收。

  • 非必須的對(duì)象,比軟引用更弱一-些
  • GC時(shí)會(huì)被回
  • 被回收的概率也不大,因?yàn)镚C線程優(yōu)先級(jí)比較低
  • 適用于引用偶爾被使用且不影響垃圾收集的對(duì)象 使用:
Map<Key, ResourceWeakReference> activeEngineResources = new HashMap<>();
//ResourceWeakReference弱引用

4.虛引用(PhantomReference)

  • 不會(huì)決定對(duì)象的生命周期
  • 任何時(shí)候都可能被垃圾收集器回收
  • 跟蹤對(duì)象被垃圾收集器回收的活動(dòng),起哨兵作用
  • 必須和引用隊(duì)列ReferenceQueue聯(lián)合使用

        當(dāng)垃圾回收器準(zhǔn)備回收一個(gè)對(duì)象時(shí),如果發(fā)現(xiàn)它還有虛引用,就會(huì)把這個(gè)虛引用加入到與之 關(guān)聯(lián)的引用隊(duì)列中。

        程序可以通過(guò)判斷引用隊(duì)列中是否已經(jīng)加入了虛引用,來(lái)了解被引用的對(duì)象是否將要被垃圾回收。如果程序發(fā)現(xiàn)某個(gè)虛引用已經(jīng)被加入到引用隊(duì)列,那么就可以在所引用的對(duì)象的內(nèi)存被回收之前采取必要的行動(dòng)。

Object obj = new Object();
ReferenceQueue queue = new ReferenceQueue();
PhantomReference reference = new PhantomReference(obj, queue);
//強(qiáng)引用對(duì)象滯空,保留軟引用
obj = null;

5. 引用隊(duì)列(ReferenceQueue)

  • 無(wú)實(shí)際存儲(chǔ)結(jié)構(gòu),存儲(chǔ)邏輯依賴(lài)于內(nèi)部節(jié)點(diǎn)之間的關(guān)系來(lái)表達(dá)
  • 存儲(chǔ)關(guān)聯(lián)的且被GC的軟引用,弱引用以及虛引用
到此這篇關(guān)于Java的四種引用方式的文章就介紹到這了,更多相關(guān)Java引用方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Java ORM框架的使用詳解

    基于Java ORM框架的使用詳解

    本篇文章是對(duì)Java中ORM框架的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 從架構(gòu)思維角度分析分布式鎖方案

    從架構(gòu)思維角度分析分布式鎖方案

    這篇文章主要介紹了從架構(gòu)與思維的角度來(lái)分析分布式鎖的方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-01-01
  • java Zookeeper簡(jiǎn)述

    java Zookeeper簡(jiǎn)述

    ZooKeeper是一個(gè)分布式的,開(kāi)放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Google的Chubby一個(gè)開(kāi)源的實(shí)現(xiàn),是Hadoop和Hbase的重要組件。下面通過(guò)本文給大家分享java 中 zookeeper簡(jiǎn)單使用,需要的朋友參考下吧
    2021-09-09
  • Java動(dòng)態(tài)數(shù)組添加數(shù)據(jù)的方法與應(yīng)用示例

    Java動(dòng)態(tài)數(shù)組添加數(shù)據(jù)的方法與應(yīng)用示例

    這篇文章主要介紹了Java動(dòng)態(tài)數(shù)組添加數(shù)據(jù)的方法,結(jié)合實(shí)例形式詳細(xì)分析了Java動(dòng)態(tài)數(shù)組的創(chuàng)建、添加、查找、打印等相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • java 實(shí)現(xiàn)約瑟夫環(huán)的實(shí)例代碼

    java 實(shí)現(xiàn)約瑟夫環(huán)的實(shí)例代碼

    這一次是借鑒模仿別人寫(xiě)的代碼,以前覺(jué)得不好將數(shù)據(jù)結(jié)構(gòu)的鏈結(jié)構(gòu)什么的遷移到j(luò)ava上來(lái)使用,但這一次確實(shí)讓我感受到了可以自己構(gòu)造數(shù)據(jù)結(jié)構(gòu),然后使用類(lèi)似鏈的方式來(lái)解決約瑟夫環(huán),有所頓悟。不多說(shuō),繼續(xù)上代碼
    2013-10-10
  • idea在plugins中搜不到插件的解決方法

    idea在plugins中搜不到插件的解決方法

    本文主要介紹了idea在plugins中搜不到插件的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 解決Eclipse add external jars運(yùn)行出現(xiàn)java.lang.NoClassDefFoundError的方法

    解決Eclipse add external jars運(yùn)行出現(xiàn)java.lang.NoClassDefFoundErro

    本篇文章對(duì)Eclipse add external jars導(dǎo)致運(yùn)行出現(xiàn)java.lang.NoClassDefFoundError的解決方法進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下
    2013-05-05
  • 走進(jìn)SpringBoot之配置文件與多環(huán)境詳解

    走進(jìn)SpringBoot之配置文件與多環(huán)境詳解

    這篇文章主要介紹了走進(jìn)SpringBoot之配置文件與多環(huán)境,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • 通過(guò)Java修改游戲存檔的實(shí)現(xiàn)思路

    通過(guò)Java修改游戲存檔的實(shí)現(xiàn)思路

    這篇文章主要介紹了通過(guò)Java修改游戲存檔的實(shí)現(xiàn)思路,實(shí)現(xiàn)方法也很簡(jiǎn)單,因?yàn)橹参锎髴?zhàn)僵尸游戲的數(shù)據(jù)文件存儲(chǔ)在本地的存儲(chǔ)位置是已知的,因此我們可以將實(shí)現(xiàn)過(guò)程拆分為三個(gè)步驟,需要的朋友可以參考下
    2021-10-10
  • Java Spring IOC圖文詳解

    Java Spring IOC圖文詳解

    IoC是一種讓服務(wù)消費(fèi)者不直接依賴(lài)于服務(wù)提供者的組件設(shè)計(jì)方式,是一種減少類(lèi)與類(lèi)之間依賴(lài)的設(shè)計(jì)原則。下面通過(guò)本文給大家分享spring中ioc的概念,感興趣的朋友一起看看吧
    2021-09-09

最新評(píng)論