GC - 根結(jié)點枚舉

根節(jié)點枚舉

在可達性算法當中是通過GC ROOT的引用找到存活對象的方式臀玄,在現(xiàn)代的收集器基本可以做到和用戶線程一起并發(fā)執(zhí)行的程度钧舌,但是根節(jié)點枚舉要保證某個時間點的“快照”董饰,這也意味著根節(jié)點枚舉需要暫停用戶線程旁壮。

一套完整的“GC Roots”也必須考慮分代回收和局部回收的問題偶宫。例如 Partial GC 針對堆中某塊區(qū)域的發(fā)起垃圾回收時哥牍,也必須考慮此內(nèi)存區(qū)域內(nèi)的對象是否可能被其他區(qū)域引用露懒? 所以此時也必須將這些關(guān)聯(lián)區(qū)域的對象一起加入到“GC Roots”集合里闯冷,才能保證可達性分析的正確性。

OopMap 數(shù)據(jù)結(jié)構(gòu)

枚舉出整個“GC Roots”是非常麻煩的

  1. 運行時數(shù)據(jù)本身就是動態(tài)的懈词。
  2. Java應(yīng)用越來越大蛇耀。

JVM 如何解決呢?

首先在進行根節(jié)點選舉時坎弯,必須暫停全部的用戶線程纺涤,我們把這個過程稱為“Stop The Word”(下面簡稱STW)(注:但必須要說明,STW不一定是全局的抠忘,也可以是局部的撩炊,這和安全點的類型有關(guān)。此時說的必須暫停全部用戶線程只是因為GC時必須使全部線程進入安全點(gc safe point))崎脉。

在HotSpot的解決方案中拧咳,是使用一組稱為OopMap的數(shù)據(jù)結(jié)構(gòu)來存放這些對象的引用(OopMap在類加載動作完成時生成)。也就是說當用戶線程暫停下來之后囚灼,其實并不需要一個不漏的檢查完所有的執(zhí)行上下文和全局的引用位置骆膝。而是直接通過OopMap來獲取棧上或寄存器里哪里有GC管理的指針(引用指針)。

這種結(jié)構(gòu)會存在哪些問題灶体?
這里可以看到阅签,如果每一次對象的讀取變化,都需要往OopMap里面存儲內(nèi)容蝎抽,會導致OopMap的內(nèi)容不斷臃腫擴大政钟,垃圾收集器的掃描成本會變得非常的昂貴。
為了應(yīng)對這一類問題樟结,HotSpot引入了“安全點這一機制進行處理”养交。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市瓢宦,隨后出現(xiàn)的幾起案子层坠,更是在濱河造成了極大的恐慌,老刑警劉巖刁笙,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件圃阳,死亡現(xiàn)場離奇詭異佳励,居然都是意外死亡嫌套,警方通過查閱死者的電腦和手機狮惜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來摘悴,“玉大人峭梳,你說我怎么就攤上這事。” “怎么了葱椭?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵捂寿,是天一觀的道長。 經(jīng)常有香客問我孵运,道長秦陋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任治笨,我火速辦了婚禮驳概,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘旷赖。我一直安慰自己顺又,他們只是感情好,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布等孵。 她就那樣靜靜地躺著稚照,像睡著了一般。 火紅的嫁衣襯著肌膚如雪俯萌。 梳的紋絲不亂的頭發(fā)上果录,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機與錄音绳瘟,去河邊找鬼雕憔。 笑死姿骏,一個胖子當著我的面吹牛糖声,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播分瘦,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼蘸泻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了嘲玫?” 一聲冷哼從身側(cè)響起悦施,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎去团,沒想到半個月后抡诞,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡土陪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年昼汗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鬼雀。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡顷窒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出源哩,到底是詐尸還是另有隱情鞋吉,我是刑警寧澤鸦做,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站谓着,受9級特大地震影響泼诱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜漆魔,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一坷檩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧改抡,春花似錦矢炼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至欠拾,卻和暖如春胰锌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背藐窄。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工资昧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人荆忍。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓格带,卻偏偏與公主長得像,于是被迫代替她去往敵國和親刹枉。 傳聞我的和親對象是個殘疾皇子叽唱,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容