偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

分析java對(duì)象的幾種引用(reference)

開發(fā) 后端
本文介紹的是java對(duì)象的引用的分析,希望對(duì)大家有幫助,一起來看吧!

java對(duì)象的引用reference分為有強(qiáng)引用,軟引用,弱引用,虛引用這幾種形式。

1、Soft Reference(軟引用)

指到的對(duì)象,即使沒有任何Direct Reference,也不會(huì)清除,一直到j(luò)vm內(nèi)存不足且沒有Direct Reference時(shí)候才會(huì)清除。

應(yīng)用場(chǎng)景:常用來設(shè)計(jì)緩存,不但可以將對(duì)象緩存起來,也不會(huì)容易造成內(nèi)存不足。

2、Weak Reference(弱引用)

GC一旦發(fā)現(xiàn)了弱引用關(guān)系進(jìn)行就開始收集對(duì)象。

應(yīng)用場(chǎng)景:想查看某些對(duì)象信息,又不想影響GC對(duì)其的收集工作。

與GC的交互:

1.將referent置為null引用;

2.將堆中的目標(biāo)對(duì)象設(shè)置為“finalizable(可結(jié)束的)”;

3.先執(zhí)行finalize(),釋放內(nèi)存,軟引用添加到RefernceQueue中。

ReferenceQueue在 soft renference和 weak reference中可以為null,但虛應(yīng)用中必須有!

3、PhantomReference(虛引用)

與GC的交互:

1.不將referent置為null引用;而是將堆中的目標(biāo)對(duì)象設(shè)置為“finalizable(可結(jié)束的)”;

2.先軟引用添加到RefernceQueue中。然后收集對(duì)象,釋放內(nèi)存

附注:ReferenceQueue在 soft renference和 weak reference中可以為null,但虛引用中必須有!

4、抽象類Reference分析

java.lang.ref包中有四個(gè)類,他們的關(guān)系是PhantomReference,WeakReference,SoftReference繼承了抽象類Reference。Reference類中,有thread子類(ReferenceHandler),并在靜態(tài)區(qū)域中開啟,對(duì)pending字段進(jìn)行實(shí)時(shí)的監(jiān)控。

pending是由jvm來賦值的,當(dāng)Reference內(nèi)部的referent對(duì)象的可達(dá)狀態(tài)改變時(shí),jvm會(huì)將Reference對(duì)象放入pending鏈表。

一旦relevent= null,垃圾收集時(shí)會(huì)標(biāo)記WeakReference的referent為不可達(dá)get()返回null,并且通過賦值給pending ,觸發(fā)ReferenceHandler線程處理pending。

ReferenceHandler線程要做的是將pending對(duì)象enqueue,但默認(rèn)我們所提供的queue,也就是從構(gòu)造函數(shù)傳入的是null,實(shí)際是使用了ReferenceQueue.NULL,Handler線程判斷queue為ReferenceQueue.NULL則不進(jìn)行操作,只有非ReferenceQueue.NULL 的queue才會(huì)將Reference進(jìn)行enqueue。

希望通過以上內(nèi)容的介紹,能夠給你帶來幫助。

責(zé)任編輯:于鐵 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-07-22 15:12:12

java

2024-08-14 13:24:24

2009-06-19 16:19:23

Java對(duì)象引用

2022-01-12 09:08:37

索引JavaReference對(duì)象

2009-12-03 09:59:20

JVM概念Java對(duì)象引用類型

2015-11-16 11:22:05

Java對(duì)象內(nèi)存分配

2021-10-18 15:50:49

Android強(qiáng)引用軟引用

2019-12-12 15:39:28

大數(shù)據(jù)IT互聯(lián)網(wǎng)

2011-06-30 09:25:22

軟件項(xiàng)目

2009-09-09 09:36:25

Linq對(duì)象引用

2009-08-17 14:48:44

Java參數(shù)傳遞機(jī)制

2011-09-22 13:49:44

XML基準(zhǔn)測(cè)試

2011-05-17 10:33:44

IE6

2020-08-24 08:05:47

JavaScriptJavaScript 頁(yè)面

2023-12-25 09:30:41

Java垃圾回收

2024-05-20 08:58:13

Java引用類型垃圾回收器

2009-09-02 16:02:52

C#引用托管對(duì)象

2017-02-27 11:48:58

JVM源碼分析Java

2021-03-06 19:45:23

項(xiàng)目文件代碼

2010-01-20 18:24:51

C++CLI
點(diǎn)贊
收藏

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