成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一個Java對象的回憶錄:垃圾回收

開發 后端
“你醒啦!”,迷迷糊糊中聽到一個聲音,我睜開了眼睛,發現一個小伙伴正看著我。我慢慢坐了起來,舉目四望,這里有好多形形色色的對象居住在這里,遠處還有好多的線程在各自忙碌著,好一副熱鬧的景象!

對象的誕生

“你醒啦!”,迷迷糊糊中聽到一個聲音,我睜開了眼睛,發現一個小伙伴正看著我。

“這里是哪里,你是誰啊?”

“這里是堆區,我是一個Ajax對象,叫我小A吧”

我慢慢坐了起來,舉目四望,這里有好多形形色色的對象居住在這里,遠處還有好多的線程在各自忙碌著,好一副熱鬧的景象!

[[321539]]

“你好,我才剛醒,我還不知道我是什么對象呢”

“這個簡單,讓我看看哈~~哦,原來你是一個APIController對象啊”,小A摸了摸我的頭。

“你怎么知道的?”

“你的頭上這里有個64bit的Klass指針,喏,順著這個方向看過去,那里記錄了你所屬的類信息,你看,那里寫著APIController呢“

一個Java對象的回憶錄:垃圾回收

聽他這么一說,我這才注意到我的頭上有兩個64bit的字段。

“唉,小A,旁邊這個64bit的數字又是裝的什么內容呢?”

“那個叫MarkWord,是咱們Java對象的門面,里面的信息可重要了,你可要保管好了,這里面有。。。”

Minor GC

突然,不知從哪里傳來一串警報聲,隨后聽到廣播:“各線程注意,請進入安全點等待,各分區注意,啟動一次Minor GC”

[[321541]]

聽到廣播的我莫名的緊張起來。

不知怎么回事,遠處忙碌的線程們都仿佛被施了定身法一般,都停下了手頭的活。只有少數幾個還在活動,這幾個線程大叔看上去跟他們有些不一樣,其中有幾個朝我們這邊走了過來。

“這是要干什么啊?”我向小A打聽情況。

“我也不知道,我也比你先出生沒多久,這情況我也是第一次見到”,小A好像也有一點慌張。

沒過多久,來了一個兇巴巴的管理員線程,拿著喇叭吼著:“Eden區的對象們聽著,念到名字的站起來”

說完,便開始一個個點名,心里一陣忐忑,怕被叫到,又怕不被叫到。

[[321542]]

念了很久,終于聽到了小A和我的名字,我倆戰戰兢兢的站了起來。

沒多久就念完了,我一瞅,站起來的是少數啊,心里有點不好的預感。

“念到名字的跟我來,其他的交給我的助手處理”,說完大家跟著他開始移動。

在走的路上,碰上了另外一支隊伍,和我們匯合了。

[[321543]]

“唉,兄弟,怎么稱呼,你們哪個單位的?”小A熱情的上去和一個對象攀談了起來。

“叫我小B吧,我們這波是Survivor From區的,你們Eden區來的吧,我半小時前還在你們那兒待過呢”,這個自稱是小B的也很隨和。

“小B哥您好,咱們這是要去哪里啊?”我也上前搭了句話。

“前面是Survivor To區”

“咱們是怎么被挑出來的?”

“這里的管理員會通過一種叫GC Roots的對象,順藤摸瓜,找出所有還有引用關系的對象,咱們就是幸存者,說明咱們還有價值”

一個Java對象的回憶錄:垃圾回收

“那留下的對象怎么辦?”

“他們的命運多半懸了,因為沒有別的對象引用他們了,需要把他們清理掉,騰出空間來”

我似懂非懂,一邊走一邊擔心著,很快我們就到了傳說中的Survivor To區,管理員安排我們都坐下,“這里好小啊”

“那可不,比起你原來的Eden區,這里只有八分之一大小”,我一回頭,剛才路上碰到的小B居然就在我和小A的旁邊,巧了不是。

“唉,小B哥,咱們這么折騰一圈是在做什么啊?”

[[321544]]

“這叫做垃圾回收GC,你們開始待那地方叫Eden區,對象出生的地方都在那里。咱們所在的地方是一個叫Java Virtual Machine的世界,程序員只管創建對象,不管釋放,這對象越來越多,Eden區放不下了,自然就要騰出空間來了。”

我和小A都點了點頭,心里慶幸躲過一劫,抬頭望去,不知什么時候,那些定住的線程們又開始忙活起來了。

“還沒恭喜你們呢,長大一歲了”,小B拍了拍我倆的肩膀,我倆面面相覷,滿臉問號。

“這是從何說起呢?”,小A先開口了。

“你們頭上的MarkWord第3-6位記錄的就是你們的年齡,經過一次GC就長大一歲了!”

我倆互相看了看,又看了看小B的GC年齡位置,居然已經15歲了。

一個Java對象的回憶錄:垃圾回收

“小B哥,難怪你見多識廣,都一把年紀了呀。咦,這表示GC年紀的只有4位,最大只能表示到15,等會兒要是再來一次GC,這不要裝不下了嗎?”,看著小B的腦袋,我陷入了思考。

“再來一次GC我要是還能幸存,我就要進入老年代區域了,就不能陪你們玩兒了”,小B看著我們眨了眨眼睛。

“老年代,那是什么地方,我們不能去嗎?”

“都說了是老年代了,是我這種老年對象去的地方,你們新來的還要在Survivor To區和Survivor From區兜兜轉轉好些回合呢,等你們到我這把年紀就能過去了”

一個Java對象的回憶錄:垃圾回收

“啊,為什么這么麻煩,設置這么多區都是干嘛的啊?”小A急著問。

小B把手搭在小A的肩說到:“這里的管理員用的是標記-復制算法來清理空間,所以需要在Eden區之外再設一個地方接收復制活下來的對象。”

“那加一個Survivor區就夠了啊,干嘛弄兩個Survivor區?”我也拋了一個問題。

小B把另一只手搭在了我的肩上,“這是為了讓存活的對象能夠在這邊反復流轉,不要著急去老年代區域”

“那為什么Survivor比Eden小那么多?”,我繼續問到

“根據他們統計發現,98%的對象都活不過一輪GC,留下來的都是少數。而且兩個Survivor區有一個要空著,如果太大就太浪費了。”

聽著小B的話我們倆都陷入了沉思。

[[321546]]

沒過一會兒,廣播又響了起來:“各線程注意,請進入安全點等待,各分區注意,啟動一次Minor GC”,剛剛平靜的心又一次懸了起來。

管理員又開始點名,這一次,我和小B都被點到了,而沒有聽到小A的名字。

我們跟小A告別了,離開了Survivor To區,走到分叉路口,小B也跟我道別:“再見了朋友,如果有機會,老年代等你來再聚”

接下來就只剩我一個對象了,跟隨陌生的對象隊伍來到了Survivor From區,這里跟剛才的To區規模相當,只是隊伍比起之前那次又小了很多。

來到自己的位置坐好,看了看頭上的GC年齡位,我2歲了。

Finalizer對象

沒有了熟悉的朋友,獨自發著呆,等待著線程們來訪問我。

突然,有人拍了拍我的肩膀,我回頭看去,居然是小A,他跑的氣喘吁吁的。

[[321547]]

“你不是沒有被念到名字,沒有對象再引用你了嗎,居然沒有被清理?”,再次看見小A,我有點難以置信。

“剛才真的好險,我都嚇死了,沒想到事情出現了轉機!”

“發生了什么,快告訴我!”,我迫不及待的想知道這一切究竟是怎么回事。

小A喘了幾口氣繼續說到:“就在你們走后,管理員又拿出了另外一份名單,我的名字居然在上面,我一打聽才知道原來檢查到有一個Finalizer對象還在引用我~”

“奇怪了,不是說沒有對象嗎,怎么又冒出了一個Finalizer對象?這是什么?”

“后來我見到了那個Finalizer對象,就在開始我們沒多遠的位置,聽他說是因為我所屬的類有覆蓋finalize方法,所以在我出生的時候,他也一同誕生,并且一直持有我的引用”

一個Java對象的回憶錄:垃圾回收

“那后來呢?”,我繼續追問。

“后來啊,他被管理員放進了一個ReferenceQueue的隊列去了,他們把那地方叫F-Queue監獄。等待一個名字也叫Finalizer的線程大叔去處理,通過Finalizer對象來調用我的finalize方法,之后就把我們之間的聯系切斷了”

“他要倒霉了!不過好在還是救了你一命”

“躲得了初一,躲不過十五,現在連Finalizer對象也沒引用我了,下一次GC我鐵定要完蛋的”,小A說完又低下了頭。

“別想那么多,做對象最重要的就是開心了,說不定下一次我陪你一起完蛋呢”

[[321548]]

我倆剛剛說完,熟悉的廣播又想起了:“各線程注意,請進入安全點等待,各分區注意,啟動一次Minor GC”

很快,管理員就念到了我的名字,看來我還能撐下去。快到結束的時候,管理員居然神奇般的念到了小A的名字。

“小A,你聽到了嗎,居然還有對象在引用你!”我高興的對小A說到,小A也使勁點點頭。

“我知道了,一定是Finalizer線程大哥在執行我的finalize方法的時候,又把我和誰建立了聯系,對,一定是這樣!”

我們再一次從To區來到了From區,這一次又少了很多舊面孔,不過從Eden區來了不少新面孔。

往后的一段時間里,我們在這兜兜轉轉了好多輪,終于看到頭上的年齡標記慢慢變成了15歲。

Full GC

沒過多久,廣播再次響起,我和小A幸運的再次被點到名字,隨后,管理員檢查了我和小A,發現我倆超齡了,直接給我們趕到了一條新的路上,我知道前面就是傳說中的老年代了。

來到這個陌生的地方,放眼望去,這里可比我待過的Eden區、From區、To區加起來還要大,里面有好多的對象,密密麻麻的,不過看上去一個個都不是省油的燈,畢竟能來到這里的對象,比起Eden區的那些萌新都是些老油條了。

[[321549]]

我倆找到自己的位置坐下開始閑聊,這時,從不遠處走過來一個身影,走近一看正是之前的小B。

“唉,這不是小A嗎,記得你不是被清理了嗎,怎么來這兒了?”,對于小A的出現,小B哥有些驚訝。

隨后小A也向小B聊起了之前的那段驚險經歷~

正在閑聊的時候,管理員突然進來圈了一大片空閑的位置,創建了一個巨大的對象!眾對象都驚呆了!

[[321550]]

“小B哥,這哥們什么來路,空降啊,直接到老年代!”我好奇的問到。

“沒辦法,誰叫人家體格大,Eden區要么裝不下,要么嫌給他復制過去復制過來太費勁,所以直接給安排到這里了,不像我們要一點點熬過來。”

“各線程注意,請進入安全點等待,各分區注意,啟動一次Full GC“,熟悉的廣播又一次響起,只不過這一次聽到的是Full GC。

“看來內存吃緊了啊!”小B嘆了口氣。

管理員又開始點名了,這一次,幸運不再眷顧小A。

未完待續~~

彩蛋

一個線程小姐姐迎面向我走了過來。

“Hi,小朋友你好,我是3002號線程,現在我要來鎖定你,別動哦,讓我檢查下你的MarkWord”

“lock位是01,Good!讓我再看看偏向鎖標記位,呀!是個1,糟糕”,小姐姐皺起了眉頭。

欲知后事如何,請關注后續精彩......

責任編輯:趙寧寧 來源: 編程技術宇宙
相關推薦

2012-06-07 09:00:06

2013-04-06 18:52:20

2023-04-07 19:25:04

后端開發

2021-03-10 08:05:10

Nginx面試并發

2012-09-07 14:30:31

工作回憶錄

2021-01-12 11:44:48

java垃圾回收

2025-07-02 02:45:00

2013-08-28 11:21:05

2012-09-19 14:36:38

創業創業公司創業教訓

2020-12-21 11:40:48

鴻蒙HarmonyOS2.回憶錄

2021-01-04 10:08:07

垃圾回收Java虛擬機

2013-12-24 12:49:25

2012-09-25 10:48:38

互聯網數據云計算

2009-07-06 17:34:22

Java垃圾回收

2012-12-18 13:57:42

.NetC#

2022-03-21 11:33:11

JVM垃圾回收器垃圾回收算法

2012-09-25 09:47:00

云計算云環境互聯網

2009-06-25 17:48:24

Java垃圾回收

2010-12-13 11:14:04

Java垃圾回收算法

2023-12-25 09:30:41

Java垃圾回收
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www.日韩高清 | 一级黄色短片 | 久热久热| 日韩久久久久久久 | 九九综合九九 | 国产精品视频一区二区三区四蜜臂 | 91黄色免费看 | 亚洲人成人一区二区在线观看 | 蜜月aⅴ免费一区二区三区 99re在线视频 | 欧美a在线 | 色婷婷av久久久久久久 | 黄a大片 | 91久久精品国产91久久性色tv | 日日淫 | 伊人二区 | 国产久 | 在线免费观看成年人视频 | 久草视频观看 | 伊人中文字幕 | 欧产日产国产精品99 | 国产农村妇女精品一二区 | 国产在线视频三区 | 久国久产久精永久网页 | av喷水| 在线免费观看黄网 | 亚洲午夜精品视频 | 精品96久久久久久中文字幕无 | 国产色99精品9i | 精品av| 国产综合在线视频 | 久久中文字幕一区 | 欧美区日韩区 | 国产精品一二三区 | 国产精品久久久久久久久久三级 | 日韩在线播放视频 | 丝袜一区二区三区 | 在线色网 | 久久久久久久久久久久91 | 91精品久久久久 | 91视频进入 | 国产成人99av超碰超爽 |