日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

深入了解JAVA 虛引用

瀏覽:38日期:2022-08-27 08:44:34

定義

虛引用是使用PhantomReference創(chuàng)建的引用,虛引用也稱為幽靈引用或者幻影引用,是所有引用類型中最弱的一個(gè)。一個(gè)對(duì)象是否有虛引用的存在,完全不會(huì)對(duì)其生命周期構(gòu)成影響,也無(wú)法通過虛引用獲得一個(gè)對(duì)象實(shí)例。

說明

虛引用,正如其名,對(duì)一個(gè)對(duì)象而言,這個(gè)引用形同虛設(shè),有和沒有一樣。

如果一個(gè)對(duì)象與GC Roots之間僅存在虛引用,則稱這個(gè)對(duì)象為虛可達(dá)(phantom reachable)對(duì)象。

當(dāng)試圖通過虛引用的get()方法取得強(qiáng)引用時(shí),總是會(huì)返回null,并且,虛引用必須和引用隊(duì)列一起使用。既然這么虛,那么它出現(xiàn)的意義何在??

別慌別慌,自然有它的用處。它的作用在于跟蹤垃圾回收過程,在對(duì)象被收集器回收時(shí)收到一個(gè)系統(tǒng)通知。 當(dāng)垃圾回收器準(zhǔn)備回收一個(gè)對(duì)象時(shí),如果發(fā)現(xiàn)它還有虛引用,就會(huì)在垃圾回收后,將這個(gè)虛引用加入引用隊(duì)列,在其關(guān)聯(lián)的虛引用出隊(duì)前,不會(huì)徹底銷毀該對(duì)象。 所以可以通過檢查引用隊(duì)列中是否有相應(yīng)的虛引用來判斷對(duì)象是否已經(jīng)被回收了。

如果一個(gè)對(duì)象沒有強(qiáng)引用和軟引用,對(duì)于垃圾回收器而言便是可以被清除的,在清除之前,會(huì)調(diào)用其finalize方法,如果一個(gè)對(duì)象已經(jīng)被調(diào)用過finalize方法但是還沒有被釋放,它就變成了一個(gè)虛可達(dá)對(duì)象。

與軟引用和弱引用不同,顯式使用虛引用可以阻止對(duì)象被清除,只有在程序中顯式或者隱式移除這個(gè)虛引用時(shí),這個(gè)已經(jīng)執(zhí)行過finalize方法的對(duì)象才會(huì)被清除。想要顯式的移除虛引用的話,只需要將其從引用隊(duì)列中取出然后扔掉(置為null)即可。

同樣來看一個(gè)栗子:

public class PhantomReferenceTest { private static final List<Object> TEST_DATA = new LinkedList<>(); private static final ReferenceQueue<TestClass> QUEUE = new ReferenceQueue<>(); public static void main(String[] args) { TestClass obj = new TestClass('Test'); PhantomReference<TestClass> phantomReference = new PhantomReference<>(obj, QUEUE); // 該線程不斷讀取這個(gè)虛引用,并不斷往列表里插入數(shù)據(jù),以促使系統(tǒng)早點(diǎn)進(jìn)行GC new Thread(() -> { while (true) { TEST_DATA.add(new byte[1024 * 100]); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); Thread.currentThread().interrupt(); } System.out.println(phantomReference.get()); } }).start(); // 這個(gè)線程不斷讀取引用隊(duì)列,當(dāng)弱引用指向的對(duì)象唄回收時(shí),該引用就會(huì)被加入到引用隊(duì)列中 new Thread(() -> { while (true) { Reference<? extends TestClass> poll = QUEUE.poll(); if (poll != null) { System.out.println('--- 虛引用對(duì)象被jvm回收了 ---- ' + poll); System.out.println('--- 回收對(duì)象 ---- ' + poll.get()); } } }).start(); obj = null; try { Thread.currentThread().join(); } catch (InterruptedException e) { e.printStackTrace(); System.exit(1); } } static class TestClass { private String name; public TestClass(String name) { this.name = name; } @Override public String toString() { return 'TestClass - ' + name; } }}

使用的虛擬機(jī)設(shè)置如下:

-verbose:gc -Xms4m -Xmx4m -Xmn2m

運(yùn)行結(jié)果如下:

[GC (Allocation Failure) 1024K->432K(3584K), 0.0113386 secs][GC (Allocation Failure) 1455K->520K(3584K), 0.0133610 secs][GC (Allocation Failure) 1544K->648K(3584K), 0.0008654 secs]nullnullnull[GC (Allocation Failure) 1655K->973K(3584K), 0.0008111 secs]null...省略幾個(gè)null的輸出[GC (Allocation Failure) 1980K->1997K(3584K), 0.0009289 secs][Full GC (Ergonomics) 1997K->1870K(3584K), 0.0048483 secs]--- 弱引用對(duì)象被jvm回收了 ---- java.lang.ref.PhantomReference@74cbe23d--- 回收對(duì)象 ---- nullnull...省略幾個(gè)null和幾次Full GC的輸出[Full GC (Ergonomics) 2971K->2971K(3584K), 0.0024850 secs][Full GC (Allocation Failure) 2971K->2971K(3584K), 0.0022460 secs]Exception in thread 'Thread-0' java.lang.OutOfMemoryError: Java heap spaceat weakhashmap.PhantomReferenceTest.lambda$main$0(PhantomReferenceTest.java:20)at weakhashmap.PhantomReferenceTest$$Lambda$1/2065951873.run(Unknown Source)at java.lang.Thread.run(Thread.java:748)

因?yàn)樵O(shè)置的虛擬機(jī)堆大小比較小,所以創(chuàng)建一個(gè)100k的對(duì)象時(shí)直接進(jìn)入了老年代,等到發(fā)生Full GC時(shí)才會(huì)被掃描然后回收。

適用場(chǎng)景

使用虛引用的目的就是為了得知對(duì)象被GC的時(shí)機(jī),所以可以利用虛引用來進(jìn)行銷毀前的一些操作,比如說資源釋放等。這個(gè)虛引用對(duì)于對(duì)象而言完全是無(wú)感知的,有沒有完全一樣,但是對(duì)于虛引用的使用者而言,就像是待觀察的對(duì)象的把脈線,可以通過它來觀察對(duì)象是否已經(jīng)被回收,從而進(jìn)行相應(yīng)的處理。

事實(shí)上,虛引用有一個(gè)很重要的用途就是用來做堆外內(nèi)存的釋放,DirectByteBuffer就是通過虛引用來實(shí)現(xiàn)堆外內(nèi)存的釋放的。

小結(jié)

虛引用是最弱的引用 虛引用對(duì)對(duì)象而言是無(wú)感知的,對(duì)象有虛引用跟沒有是完全一樣的 虛引用不會(huì)影響對(duì)象的生命周期 虛引用可以用來做為對(duì)象是否存活的監(jiān)控

以上就是詳解JAVA 虛引用的詳細(xì)內(nèi)容,更多關(guān)于JAVA 虛引用的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲欧美成人综合| 18国产精品| 日韩精品久久理论片| 国产精品久久久久久久免费观看| 日韩区欧美区| 丝袜脚交一区二区| 国产精品日韩| 午夜在线视频观看日韩17c| se01亚洲视频| 四季av一区二区凹凸精品| 国产一区二区三区黄网站| 蜜桃久久久久| 日产精品一区二区| 久久久国产精品网站| 国产精品porn| 色综合视频一区二区三区日韩| 99国产精品久久久久久久成人热| 快she精品国产999| 中文字幕亚洲精品乱码| 日韩中文av| 国产亚洲在线观看| 国产精品成人a在线观看| 精品99在线| 日本精品不卡| 欧美亚洲激情| 视频一区欧美精品| 天使萌一区二区三区免费观看| 国产一级一区二区| 亚洲精品在线二区| 欧美日韩一区二区三区不卡视频 | 久久免费高清| 日韩精品水蜜桃| 亚洲综合二区| 日韩精品第二页| 美女久久久精品| 精品久久久久中文字幕小说| 日韩电影免费网址| 99视频精品免费观看| 免费久久精品视频| 国产伦理久久久久久妇女| 精品国产一区二区三区性色av| 美女视频黄久久| 国产黄大片在线观看| 韩国精品主播一区二区在线观看 | 99精品电影| 精品国产一区二区三区性色av| 欧美激情国产在线| 欧美日韩在线二区| 亚欧洲精品视频在线观看| 国产精品欧美日韩一区| 精品视频网站| 欧美日韩国产高清| 国产日韩一区二区三区在线播放| 国产欧美二区| 日韩精品免费一区二区在线观看 | 欧美午夜三级| 日本免费久久| 亚洲精品人人| 日韩电影二区| 少妇精品久久久一区二区三区| 麻豆一区二区三| 亚洲欧美日本日韩| 激情中国色综合| 老司机久久99久久精品播放免费| 天堂精品久久久久| 中文av在线全新| 日韩三级久久| 色婷婷久久久| 国产精品日本一区二区不卡视频 | 精品视频在线你懂得| 国产视频欧美| 电影91久久久| 美女av在线免费看| 亚洲三级av| 秋霞影视一区二区三区| 日韩精品视频在线看| 欧美91福利在线观看| 亚洲小说春色综合另类电影| 给我免费播放日韩视频| 亚洲欧美专区| 午夜免费一区| 国产一区国产二区国产三区| 蜜臀久久99精品久久久久久9| 欧美好骚综合网| 天堂俺去俺来也www久久婷婷| 久久一区二区三区电影| 成人在线超碰| 欧美激情综合| 国产伦精品一区二区三区视频| 91精品啪在线观看国产爱臀| 一区二区三区国产在线| 亚洲精选av| 亚洲欧洲免费| 亚州av一区| 日韩国产欧美在线播放| 日韩一区二区三区免费视频| 一区二区三区四区日韩| 日本中文字幕视频一区| 日韩精品一区二区三区中文字幕| 日韩精品三区四区| 国产一在线精品一区在线观看| 在线综合视频| 日本亚洲最大的色成网站www| 国产精品av一区二区| 色婷婷久久久| 99视频在线精品国自产拍免费观看| 国产专区一区| 视频一区中文字幕| 婷婷视频一区二区三区| 国产亚洲一区| 国产在线一区不卡| 欧美成a人免费观看久久| 亚洲午夜视频| 久热精品在线| 88久久精品| av资源新版天堂在线| 日韩精品免费一区二区三区| 五月天综合网站| 国产模特精品视频久久久久| 亚洲日本在线观看视频| 日本一区免费网站| 加勒比视频一区| 99久久精品网站| 日韩在线视频一区二区三区| 国产欧美综合一区二区三区| 国产一区不卡| 亚洲手机视频| 日本成人一区二区| 日韩精品dvd| 免费不卡在线观看| 国产精品地址| 91精品成人| 欧美午夜三级| 日韩欧美不卡| 日韩av成人高清| 欧美天堂视频| 日韩专区欧美专区| 国产成人精品一区二区三区在线| 午夜国产一区二区| 国产伦乱精品| 欧美日韩四区| 精品久久视频| 在线免费观看亚洲| 日本一区二区免费高清| 只有精品亚洲| 日韩在线中文| 日本不卡一区二区| 1000部精品久久久久久久久| 中文字幕av亚洲精品一部二部 | 日韩激情综合| 蜜桃精品在线| 国产精品视频一区视频二区| re久久精品视频| 国产成人在线中文字幕| 亚洲2区在线| 亚洲欧美日韩高清在线| 欧美a一区二区| 免费久久精品视频| 欧美三级精品| 久久亚洲精品中文字幕| 中文字幕一区二区三区四区久久| 国产精品二区不卡| 亚洲综合中文| 1000部精品久久久久久久久| 麻豆高清免费国产一区| 色狠狠一区二区三区| 91tv亚洲精品香蕉国产一区| 人人爱人人干婷婷丁香亚洲| 五月综合激情| 久久久久久夜| 国产精品最新| 亚洲精品精选| 亚洲一区二区三区免费在线观看| 精品国产a一区二区三区v免费| 色8久久久久| 蜜桃av一区| 红桃视频国产一区| 精品欧美日韩精品| 日韩高清电影免费| 国产精品丝袜xxxxxxx| av综合电影网站| 欧美激情福利| 国产情侣一区| 91成人精品在线| 深夜日韩欧美| 亚洲免费一区三区| 一区二区三区午夜视频| 日韩一级欧洲| 亚洲高清影视| 亚洲特级毛片| 国产高清久久| 欧美日韩日本国产亚洲在线 | 中文字幕在线官网| 麻豆高清免费国产一区| 国产精品一线天粉嫩av| 欧美日韩中出| 欧美有码在线| 国产三级一区| 国产精品一区三区在线观看| 国产日韩一区二区三区在线|