深入 Java 虛擬機 JVM G1GC 的算法與實現
[日]中村成洋 吳炎昌
買這商品的人也買了...
-
Linux Device Driver Programming 驅動程式設計$690$538 -
Java 效能優化指南 (Java Performance)$680$578 -
$774揭秘 Java 虛擬機 : JVM 設計原理與實現 -
為你自己學 Git$500$390 -
$474大型網站性能優化實戰:從前端、網絡、CDN 到後端、大促的全鏈路性能優化詳解 -
直播系統開發 : 基於 Nginx 與 Nginx-rtmp-module$414$393 -
$422JVM G1 源碼分析和調優 -
$354大型系統應用架構實戰:部署、容災、性能優化 -
$454新一代垃圾回收器ZGC設計與實現 -
$403Java 異步編程實戰 -
深入理解 Java 虛擬機:JVM 高級特性與最佳實踐, 3/e$774$735 -
機器學習的數學基礎 : AI、深度學習打底必讀$580$458 -
$658虛擬機設計與實現 以JVM為例 -
$714精通 PostgreSQL 11, 2/e (Mastering PostgreSQL 11: Expert techniques to build scalable, reliable, and fault-tolerant database applications, 2/e) -
$507深入理解 jvm 字節碼 -
$607Kotlin 編程之美 -
深入理解 Kotlin 協程$474$450 -
$403深入解析 Java 虛擬機 HotSpot -
速查! 數學大百科事典 – 127 個公式、定理、 法則$500$395 -
資料科學的建模基礎 : 別急著 coding!你知道模型的陷阱嗎?$599$539 -
$403Java 多線程與線程池技術詳解 -
Go 學習手冊 (Learning Go)$580$458 -
資料科學的統計實務 : 探索資料本質、扎實解讀數據,才是機器學習成功建模的第一步$599$539 -
流程自動化實務|微服務和雲端原生架構中的協調與整合 (Practical Process Automation: Orchestration and Integration in Microservices and Cloud Native Architectures)$580$458 -
大數據技術及架構圖解實戰派$876$832
中文年末書展|繁簡參展書2書75折 詳見活動內容 »
-
75折
為你寫的 Vue Components:從原子到系統,一步步用設計思維打造面面俱到的元件實戰力 (iThome 鐵人賽系列書)$780$585 -
75折
BDD in Action, 2/e (中文版)$960$720 -
75折
看不見的戰場:社群、AI 與企業資安危機$750$563 -
79折
AI 精準提問 × 高效應用:DeepSeek、ChatGPT、Claude、Gemini、Copilot 一本搞定$390$308 -
7折
超實用!Word.Excel.PowerPoint 辦公室 Office 365 省時高手必備 50招, 4/e (暢銷回饋版)$420$294 -
75折
裂縫碎光:資安數位生存戰$550$412 -
日本當代最強插畫 2025 : 150位當代最強畫師豪華作品集$640$576 -
79折
Google BI 解決方案:Looker Studio × AI 數據驅動行銷實作,完美整合 Google Analytics 4、Google Ads、ChatGPT、Gemini$630$498 -
79折
超有料 Plus!職場第一實用的 AI 工作術 - 用對 AI 工具、自動化 Agent, 讓生產力全面進化!$599$473 -
75折
從零開始學 Visual C# 2022 程式設計, 4/e (暢銷回饋版)$690$518 -
75折
Windows 11 制霸攻略:圖解 AI 與 Copilot 應用,輕鬆搞懂新手必學的 Windows 技巧$640$480 -
75折
精準駕馭 Word!論文寫作絕非難事 (好評回饋版)$480$360 -
Sam Yang 的插畫藝術:用 Procreate / PS 畫出最強男友視角 x 女孩美好日常$699$629 -
79折
AI 加持!Google Sheets 超級工作流$599$473 -
78折
想要 SSR? 快使用 Nuxt 吧!:Nuxt 讓 Vue.js 更好處理 SEO 搜尋引擎最佳化(iThome鐵人賽系列書)$780$608 -
78折
超實用!業務.總管.人資的辦公室 WORD 365 省時高手必備 50招 (第二版)$500$390 -
7折
Node-RED + YOLO + ESP32-CAM:AIoT 智慧物聯網與邊緣 AI 專題實戰$680$476 -
79折
「生成式⇄AI」:52 個零程式互動體驗,打造新世代人工智慧素養$599$473 -
7折
Windows APT Warfare:惡意程式前線戰術指南, 3/e$720$504 -
75折
我輩程式人:回顧從 Ada 到 AI 這條程式路,程式人如何改變世界的歷史與未來展望 (We, Programmers: A Chronicle of Coders from Ada to AI)$850$637 -
75折
不用自己寫!用 GitHub Copilot 搞定 LLM 應用開發$600$450 -
79折
Tensorflow 接班王者:Google JAX 深度學習又快又強大 (好評回饋版)$780$616 -
79折
GPT4 會你也會 - 共融機器人的多模態互動式情感分析 (好評回饋版)$700$553 -
79折
技術士技能檢定 電腦軟體應用丙級術科解題教本|Office 2021$460$363 -
75折
Notion 與 Notion AI 全能實戰手冊:生活、學習與職場的智慧策略 (暢銷回饋版)$560$420
相關主題
商品描述
本書深入Java虛擬機底層原理,對JVM內存管理中的垃圾回收算法G1GC進行了詳細解讀。
全書分為“算法篇”和“實現篇”兩大部分:
前一部分主要介紹G1GC的算法原理,內容包括G1GC的並發標記、轉移功能、軟實時性的實現和分代G1GC模式;
後一部分聚焦算法篇中沒有詳細講解的實現部分,基於HotSpotVM源碼,講解對像管理功能、
內存分配器的機制、線程管理方法和G1GC的具體實現。
本書以圖配文,通俗易懂,既係統介紹了G1GC的基礎算法,又貼近現實,
剖析了實用JVM中的G1GC實現,同時還包含了作者對G1GC的研究成果和獨到見解,是深入理解JVM和G1GC機制的佳作。
作者簡介
中村成洋(作者)
生於1985年。
日本網絡應用通信研究所研究員。
因為偶然的機會對GC產生濃厚興趣,本人卻說不清為何喜歡GC,被人追問原因時,總是回答“是緣分”。
現在是CRuby的committer,每天致力於GC的改善。著有《垃圾回收的算法與實現》。
吳炎昌(譯者)
畢業於西北工業大學軟件工程專業,曾供職於多家日本軟件公司,從事系統開發工作。
2015年回國後加入美團點評,現任系統研發工程師。愛好旅行、電影和品嚐各種美食,有一位誌趣相投的伴侶。
目錄大綱
算法篇
第 1章 G1GC是什麼
1.1 G1GC和實時性 2
1.2 堆結構 5
1.3 執行過程 5
1.4 並發標記和轉移 7
第 2章 並發標記
2.1 什麼是並發標記 8
2.2 標記位圖 9
2.3 執行步驟 10
2.4 步驟①——初始標記階段 10
2.5 步驟②——並發標記階段 12
2.6 步驟③——最終標記階段 18
2.7 步驟④——存活對象計數 19
2.8 步驟⑤——收尾工作 21
2.9 總結 22
第3章 轉移
3.1 什麼是轉移 25
3.2 轉移專用記憶集合 26
3.3 轉移專用寫屏障 28
3.4 轉移專用記憶集合維護線程 31
3.5 熱卡片 32
3.6 執行步驟 32
3.7 步驟①——選擇回收集合 33
3.8 步驟②——根轉移 34
3.9 步驟③——轉移 39
3.10 標記信息的作用 39
3.11 總結 40
第4章 軟實時性
4.1 用戶的需求 41
4.2 預測轉移時間 42
4.3 預測可信度 43
4.4 GC暫停處理的調度 44
4.5 並發標記中的暫停處理 46
第5章 分代G1GC模式
5.1 不同點 47
5.2 新生代區域 48
5.3 分代對象轉移 49
5.4 執行過程簡述 49
5.5 分代選擇回收集合 51
5.6 設置最大新生代區域數 51
5.7 GC的切換 52
5.8 GC執行的時機 52
第6章 算法篇總結
6.1 關系圖 53
6.2 優點 54
6.3 缺點 54
6.4 結束語 55
實現篇
第7章 準備工作
7.1 什麼是HotSpotVM 58
7.2 什麼是OpenJDK 58
7.3 獲取源碼 59
7.4 代碼結構 60
7.5 兩個特殊類 61
7.6 適用於各種操作系統的接口 63
第8章 對象管理功能
8.1 對象管理功能的接口 64
8.2 對象管理功能的全貌 65
8.3 CollectedHeap類 66
8.4 CollectorPolicy類 67
8.5 各個GC類 68
第9章 堆結構
9.1 VM堆 70
9.2 G1GC堆 72
9.3 常駐空間 75
第 10章 分配器
10.1 內存分配的流程 76
10.2 VM堆的申請 77
10.3 VM堆的分配 79
10.4 對象的分配 86
10.5 TLAB 90
第 11章 對象結構
11.1 oopDesc類 92
11.2 klassOopDesc類 93
11.3 Klass類 94
11.4 類之間的關系 95
11.5 不要在oopDesc類中定義虛函數 96
11.6 對象頭 97
第 12章 HotSpotVM的線程管理
12.1 線程操作的抽象化 103
12.2 Thread類 103
12.3 線程的生命周期 104
12.4 Windows線程的創建 107
12.5 Windows線程的處理開始 110
12.6 Linux線程的創建 113
12.7 開始Linux線程的處理 117
第 13章 線程的互斥處理
13.1 什麼是互斥處理 119
13.2 互斥量 119
13.3 監視器 120
13.4 監視器的實現 122
13.5 Monitor類 127
13.6 Mutex類 129
13.7 MutexLocker類 130
第 14章 GC線程(並行篇)
14.1 並行執行的流程 132
14.2 AbstractWorkGang類 136
14.3 AbstractGangTask類 137
14.4 GangWorker類 137
14.5 並行GC的執行示例 138
第 15章 GC線程(並發篇)
15.1 ConcurrentGCThread類 146
15.2 SuspendibleThreadSet類 147
15.3 安全點 150
15.4 VM線程 152
第 16章 並發標記
16.1 並發標記的全貌 155
16.2 步驟①——初始標記階段 160
16.3 步驟②——並發標記階段 168
16.4 步驟③——最終標記階段 170
16.5 步驟④——存活對象計數 172
16.6 步驟⑤——收尾工作 172
第 17章 轉移
17.1 轉移的全貌 174
17.2 步驟①——選擇回收集合 178
17.3 步驟②——根轉移 181
17.4 步驟③——轉移 185
第 18章 預測與調度
18.1 根據歷史記錄進行預測 187
18.2 並發標記的調度 194
18.3 轉移的調度 195
第 19章 準確式GC的實現
19.1 棧圖 197
19.2 句柄區域與句柄標記 209
第 20章 寫屏障的性能開銷
20.1 運行時切換GC算法 212
20.2 解釋器的寫屏障 214
20.3 JIT編譯器的寫屏障 216
後記 220
參考文獻 223


