BiBi - JVM -4- HotSpot JVM

From:深入理解Java虛擬機(jī)

問(wèn)題1:GC Roots節(jié)點(diǎn)尋找引用鏈耗時(shí),并且該分析要保證一致性,即不會(huì)出現(xiàn)分析過(guò)程中對(duì)象引用關(guān)系還在不斷變化的情況船殉,該如何?

GC進(jìn)行時(shí)必須停頓所有Java線(xiàn)程 — Stop The World咽斧。
GC Roots節(jié)點(diǎn)主要在全局性的引用【常量或類(lèi)靜態(tài)屬性】和執(zhí)行上下文【棧楨中的本地變量表】中。但躬存,并不需要一個(gè)不漏地檢查完所有全局的引用和執(zhí)行上下文张惹,HotSpot使用OopMap的數(shù)據(jù)結(jié)構(gòu),在類(lèi)加載完成的時(shí)候岭洲,HotSpot就把對(duì)象內(nèi)什么偏移量上是什么類(lèi)型的數(shù)據(jù)都計(jì)算出來(lái)宛逗,在JIT編譯過(guò)程中,也會(huì)在特定的位置記錄棧和寄存器中哪些位置是引用盾剩。所以通過(guò)OopMap雷激,GC在掃描時(shí)就可以直接得知這些信息替蔬。

問(wèn)題2:在OopMap的協(xié)助下,HotSpot可以快速且準(zhǔn)確的完成GC Roots枚舉屎暇,但如果為每一條指令都生成對(duì)應(yīng)的OopMap承桥,GC的空間成本將會(huì)很高?

要在特定的位置記錄這些信息根悼,這些位置稱(chēng)為【安全點(diǎn)凶异,Safepoint】,即程序執(zhí)行時(shí)并非在所有地方都停頓下來(lái)開(kāi)始GC挤巡,只有在到達(dá)安全點(diǎn)時(shí)才可以剩彬。具有產(chǎn)生安全點(diǎn)指令的功能有:方法調(diào)用、循環(huán)跳轉(zhuǎn)矿卑、異常跳轉(zhuǎn)等喉恋。

安全點(diǎn)的選定既不能太少以致于讓GC執(zhí)行時(shí)間太長(zhǎng);也不能過(guò)于頻繁以致于增大運(yùn)行負(fù)荷母廷。

問(wèn)題3:GC發(fā)生時(shí)轻黑,如何讓所有【不包括JNI線(xiàn)程】線(xiàn)程都“跑”到最近的安全點(diǎn)上再停頓下來(lái)?

采用【主動(dòng)式中斷】的思想:當(dāng)GC需要中斷線(xiàn)程時(shí)琴昆,不直接對(duì)線(xiàn)程操作苔悦,而是簡(jiǎn)單的設(shè)置一個(gè)標(biāo)志,各個(gè)線(xiàn)程執(zhí)行時(shí)主動(dòng)去輪詢(xún)這個(gè)標(biāo)志椎咧,發(fā)現(xiàn)中斷標(biāo)志為真時(shí)就中斷掛起,輪詢(xún)標(biāo)志的地方和安全點(diǎn)是重合的把介,跟創(chuàng)建對(duì)象需要分配內(nèi)存的地方也是重合的勤讽。

問(wèn)題4:當(dāng)線(xiàn)程處于Sleep狀態(tài)或Blocking狀態(tài)時(shí),線(xiàn)程無(wú)法響應(yīng)JVM的中斷請(qǐng)求拗踢,從而線(xiàn)程不能“走”到安全點(diǎn)的地方進(jìn)行中斷掛起脚牍,該如何?

【安全區(qū)域巢墅,Safe Region】一段代碼片段中诸狭,引用關(guān)系不會(huì)發(fā)生變化,在這個(gè)區(qū)域中的任意地方開(kāi)始GC都是安全的君纫。

在線(xiàn)程執(zhí)行到Safe Region中的代碼時(shí)驯遇,會(huì)標(biāo)識(shí)自己已經(jīng)進(jìn)入到Safe Region,當(dāng)JVM發(fā)起GC時(shí)蓄髓,就不用管標(biāo)識(shí)自己為Safe Region狀態(tài)的線(xiàn)程了叉庐。當(dāng)線(xiàn)程要離開(kāi)Safe Region時(shí),會(huì)檢測(cè)系統(tǒng)是否完成了GC過(guò)程会喝,如果完成了陡叠,線(xiàn)程就會(huì)繼續(xù)執(zhí)行玩郊,否則它必須等待直到收到可以離開(kāi)Safe Region的信號(hào)為止。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末枉阵,一起剝皮案震驚了整個(gè)濱河市译红,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌兴溜,老刑警劉巖侦厚,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異昵慌,居然都是意外死亡假夺,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)斋攀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)已卷,“玉大人,你說(shuō)我怎么就攤上這事淳蔼〔嗾海” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵鹉梨,是天一觀的道長(zhǎng)讳癌。 經(jīng)常有香客問(wèn)我,道長(zhǎng)存皂,這世上最難降的妖魔是什么晌坤? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮旦袋,結(jié)果婚禮上骤菠,老公的妹妹穿的比我還像新娘。我一直安慰自己疤孕,他們只是感情好商乎,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著祭阀,像睡著了一般鹉戚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上专控,一...
    開(kāi)封第一講書(shū)人閱讀 49,792評(píng)論 1 290
  • 那天抹凳,我揣著相機(jī)與錄音,去河邊找鬼踩官。 笑死却桶,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播颖系,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼嗅剖,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了嘁扼?” 一聲冷哼從身側(cè)響起信粮,我...
    開(kāi)封第一講書(shū)人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎趁啸,沒(méi)想到半個(gè)月后强缘,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡不傅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年旅掂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片访娶。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡商虐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出崖疤,到底是詐尸還是另有隱情秘车,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布劫哼,位于F島的核電站叮趴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏权烧。R本人自食惡果不足惜眯亦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望般码。 院中可真熱鬧搔驼,春花似錦、人聲如沸侈询。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)扔字。三九已至,卻和暖如春温技,著一層夾襖步出監(jiān)牢的瞬間革为,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工舵鳞, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留震檩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像抛虏,于是被迫代替她去往敵國(guó)和親博其。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348