終于拿到了深入Java虛擬機(jī):JVMG1GC的算法與實(shí)現(xiàn)文檔

垃圾回收這門技術(shù)有許多謎團(tuán)涝滴。很多程序員不太了解GC程序的運(yùn)行原理,因此有時(shí)它也被稱為“秘技”或“魔法”胶台。

本文的算法篇比原始論文更加詳細(xì)地介紹了G1GC 的算法原理歼疮,對(duì)于我以前理解起來比較困難的地方,還特意進(jìn)行了詳細(xì)的說明诈唬,因此內(nèi)容要比原始論文易于理解韩脏。即使是不太了解 GC 的讀者,理解起來應(yīng)該也沒有什么問題铸磅。

在實(shí)現(xiàn)篇中骤素,我們將結(jié)合實(shí)用 JVM匙睹,聚焦算法篇中沒有詳細(xì)講解的實(shí)現(xiàn)部分。

首先济竹,我們會(huì)了解 HotSpotVM『勖剩現(xiàn)在,HotSpotVM 實(shí)現(xiàn)了包括 G1GC在內(nèi)的5種GC算法送浊。不過這些算法并非憑空而來梦谜,而是基于HotSpotVM 中專為 GC 算法設(shè)計(jì)的框架實(shí)現(xiàn)的。因此袭景,接著我們就會(huì)了解作為框架之一的對(duì)象管理功能唁桩。得益于對(duì)象管理功能的接口,多種GC 算法之間的切換成為可能耸棒,而且新 GC 算法的添加也變得更加簡(jiǎn)單荒澡。之后,我們會(huì)了解對(duì)象的數(shù)據(jù)結(jié)構(gòu)和內(nèi)存分配器与殃。有關(guān)分配器的講解會(huì)稍微涉及對(duì)操作系統(tǒng)的調(diào)用单山。

除此以外,我們還將了解 G1GC 中用到的線程管理方法幅疼。HotSpotVM 內(nèi)部同樣也有能夠在 GC 過程中簡(jiǎn)單地操作線程的框架米奸,各種 GC 算法都是通過這個(gè)框架來實(shí)現(xiàn)并行 GC 和并發(fā) GC 的。

再后面就是 G1GC 的具體實(shí)現(xiàn)爽篷,講解了 G1GC 的并發(fā)標(biāo)記和轉(zhuǎn)移悴晰,以及調(diào)度程序的實(shí)現(xiàn)。這部分盡量省略了算法篇中已經(jīng)詳細(xì)講解過的內(nèi)容逐工,著重講解前面沒有涉及的內(nèi)容铡溪。

本文將從目錄、主要內(nèi)容和適合讀者閱讀三部分給大家做介紹泪喊,因?yàn)閮?nèi)容過多不能一一給大家展現(xiàn)出來佃却,只能把部分知識(shí)點(diǎn)拿出來給大家介紹,希望大家能夠喜歡窘俺!

目錄

主要內(nèi)容

本文包含算法篇和實(shí)現(xiàn)篇兩部分饲帅,又分為20章的內(nèi)容給大家深入剖析java虛擬機(jī)。

第1章G1GC是什么瘤泪;本章將介紹 G1GC 的基礎(chǔ)知識(shí)灶泵。

第2章并發(fā)標(biāo)記;本章將詳細(xì)介紹并發(fā)標(biāo)記对途。并發(fā)標(biāo)記的主要作用是提供轉(zhuǎn)移過程所需要的信息赦邻。

第3章轉(zhuǎn)移;本章將介紹實(shí)際進(jìn)行 GC 的轉(zhuǎn)移功能实檀。

第4章軟實(shí)時(shí)性惶洲;本章將介紹 G1GC 是如何實(shí)現(xiàn)軟實(shí)時(shí)性的按声。

第5章分代G1GC模式;G1GC 中存在“純 G1GC 模式”(pure garbage-first mode)和“分代 G1GC模式”(generational garbage-first mode)兩種模式恬吕。前面介紹的內(nèi)容都是關(guān)于純 G1GC 模式的签则。本章,我們將介紹分代 G1GC 模式铐料。

第6章算法篇總結(jié)渐裂;本章將總結(jié)一下前面介紹的 GC 相關(guān)處理之間的關(guān)系,然后介紹一下G1GC 的優(yōu)缺點(diǎn)钠惩。

實(shí)現(xiàn)篇

第7章準(zhǔn)備工作柒凉;

第8章對(duì)象管理功能;在 HotSpotVM 中篓跛,我們可以自主選擇使用哪種 GC 算法——只要在Java 的啟動(dòng)選項(xiàng)中像“-XX:+UseParalleGC”這樣指定即可膝捞。不同 GC 算法所管理的堆的布局并不相同。當(dāng)然,這些 GC 算法自身也不同。本文將 HotSpotVM 的堆和 GC 統(tǒng)稱為對(duì)象管理功能。本章我們將從整體上來看一看對(duì)象管理功能。

第9章堆結(jié)構(gòu)飒泻;本章講解 G1GC 的 VM 堆結(jié)構(gòu)。

第10章分配器桑驱;本章將講解 HotSpotVM 中的內(nèi)存分配器将塑。

第11章對(duì)象結(jié)構(gòu);本章卜朗,我們來看一看在 VM 堆上分配的對(duì)象的數(shù)據(jù)結(jié)構(gòu)拔第。這些被分配的對(duì)象當(dāng)然就是 GC 的回收對(duì)象了。

第12章HotSpotVM的線程管理场钉;在接下來的幾章中蚊俺,我們將學(xué)習(xí) HotSpotVM 的線程管理。我在算法篇中講過逛万,G1GC 是一種結(jié)合了并行 GC 和并發(fā) GC 的 GC 算法泳猬。并行 GC和并發(fā) GC 是通過它們各自的線程實(shí)現(xiàn)的,因此如何管理多線程是實(shí)現(xiàn)中的重點(diǎn)宇植。

本章將介紹 HotSpotVM 的線程管理中接近操作系統(tǒng)的底層部分得封。

第13章線程的互斥處理;本章將講解在訪問線程間共享資源時(shí)所進(jìn)行的互斥處理指郁。由于在進(jìn)行GC 的線程間忙上,對(duì)象是被當(dāng)作共享資源的,所以在很多情況下需要進(jìn)行互斥處理闲坎。

第14章GC線程(并行篇)疫粥;本章將講解使用多個(gè)在 HotSpotVM 中實(shí)現(xiàn)的線程并行地執(zhí)行任務(wù)的框架茬斧,看一看并行 GC 是如何使用該框架的。

第15章GC線程(并發(fā)篇)梗逮;本章將簡(jiǎn)要地講解并發(fā) GC 中用到的線程项秉,與大家一起來看一看HotSpotVM 是如何控制線程,與 mutator 并發(fā)執(zhí)行 GC 的库糠。

第16章并發(fā)標(biāo)記伙狐;本章將講解 G1GC 的并發(fā)標(biāo)記是如何實(shí)現(xiàn)的。不過瞬欧,如果只是再復(fù)述一遍算法篇中已經(jīng)介紹過的實(shí)現(xiàn)部分就太無趣了贷屎,因此本章將省略那些內(nèi)容,來講解那些在算法篇中未曾觸及的內(nèi)容艘虎。

第17章轉(zhuǎn)移唉侄;本章將講解 G1GC 中的轉(zhuǎn)移是如何實(shí)現(xiàn)的。此外野建,本章同樣會(huì)省略在算法篇中已經(jīng)介紹過的內(nèi)容属划。

第18章預(yù)測(cè)與調(diào)度;算法篇 4.5 節(jié)中講過候生,下一次并發(fā)標(biāo)記暫停處理會(huì)花費(fèi)的時(shí)間同眯,是根據(jù)過去的并發(fā)標(biāo)記暫停時(shí)間預(yù)測(cè)出來的。本章將講解 HotSpotVM 如何根據(jù)過去的時(shí)間記錄唯鸭,預(yù)測(cè)下一次的暫停時(shí)間须蜗。

此外,算法篇 4.4 節(jié)中講過 GC 會(huì)調(diào)度暫停時(shí)機(jī)目溉。在本章后半部分明肮,我將帶領(lǐng)大家看一看這是如何實(shí)現(xiàn)的。

第19章準(zhǔn)確式GC的實(shí)現(xiàn)缭付;本章將講解為了實(shí)現(xiàn)準(zhǔn)確式 GC(exact GC)柿估,HotSpotVM 是如何將“準(zhǔn)確的根信息”提供給 GC 算法的。

第20章寫屏障的性能開銷陷猫;本章將稍微改變一下視角秫舌,研究一下HotSpotVM 中寫屏障的性能開銷。

讀者對(duì)象

  • 本文適合對(duì)所有 JVM 和 GC 感興趣的讀者閱讀绣檬。
  • 還適合對(duì)實(shí)現(xiàn) OpenJDK 7 的內(nèi)存管理感興趣的人閱讀足陨。由于本文實(shí)現(xiàn)篇會(huì)引用算法篇中的內(nèi)容,因此建議大家按照順序從頭開始閱讀河咽。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末钠右,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子忘蟹,更是在濱河造成了極大的恐慌飒房,老刑警劉巖搁凸,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異狠毯,居然都是意外死亡护糖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門嚼松,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嫡良,“玉大人,你說我怎么就攤上這事献酗∏奘埽” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵罕偎,是天一觀的道長(zhǎng)很澄。 經(jīng)常有香客問我,道長(zhǎng)颜及,這世上最難降的妖魔是什么甩苛? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮俏站,結(jié)果婚禮上讯蒲,老公的妹妹穿的比我還像新娘。我一直安慰自己肄扎,他們只是感情好墨林,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著反浓,像睡著了一般萌丈。 火紅的嫁衣襯著肌膚如雪赞哗。 梳的紋絲不亂的頭發(fā)上雷则,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音肪笋,去河邊找鬼月劈。 笑死,一個(gè)胖子當(dāng)著我的面吹牛藤乙,可吹牛的內(nèi)容都是我干的猜揪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼坛梁,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼而姐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起划咐,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤拴念,失蹤者是張志新(化名)和其女友劉穎钧萍,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體政鼠,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡风瘦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了公般。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片万搔。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖官帘,靈堂內(nèi)的尸體忽然破棺而出瞬雹,到底是詐尸還是另有隱情,我是刑警寧澤刽虹,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布挖炬,位于F島的核電站,受9級(jí)特大地震影響状婶,放射性物質(zhì)發(fā)生泄漏意敛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一膛虫、第九天 我趴在偏房一處隱蔽的房頂上張望草姻。 院中可真熱鬧,春花似錦稍刀、人聲如沸撩独。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽综膀。三九已至,卻和暖如春局齿,著一層夾襖步出監(jiān)牢的瞬間剧劝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工抓歼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留讥此,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓谣妻,卻偏偏與公主長(zhǎng)得像萄喳,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蹋半,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

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