深入Java虛擬機(JVM G1GC的演算法與實現)/圖靈程序設計叢書
內容大鋼
本書深入Java虛擬機底層原理,對JVM內存管理中的垃圾回收演算法G1GC進行了詳細解讀。全書分為「演算法篇」和「實現篇」兩大部分:前一部分主要介紹G1GC的演算法原理,內容包括G1GC的併發標記、轉移功能、軟實時性的實現和分代G1GC模式;后一部分聚焦演算法篇中沒有詳細講解的實現部分,基於HotSpotVM源碼,講解對象管理功能、內存分配器的機制、線程管理方法和G1GC的具體實現。
本書以圖配文,通俗易懂,既系統介紹了G1GC的基礎演算法,又貼近現實,剖析了實用JVM中的G1GC實現,同時還包含了作者對G1GC的研究成果和獨到見解,是深入理解JVM和G1GC機制的佳作。
本書適合對所有JVM和垃圾回收演算法感興趣的讀者閱讀。
作者介紹
(日)中村成洋|責編:高宇涵|譯者:吳炎昌//楊文軒
目錄
演算法篇
第1章 G1GC是什麼
1.1 G1GC和實時性
1.2 堆結構
1.3 執行過程
1.4 併發標記和轉移
第2章 併發標記
2.1 什麼是併發標記
2.2 標記點陣圖
2.3 執行步驟
2.4 步驟①——初始標記階段
2.5 步驟②——併發標記階段
2.6 步驟③——最終標記階段
2.7 步驟④——存活對象計數
2.8 步驟⑤——收尾工作
2.9 總結
第3章 轉移
3.1 什麼是轉移
3.2 轉移專用記憶集合
3.3 轉移專用寫屏障
3.4 轉移專用記憶集合維護線程
3.5 熱卡片
3.6 執行步驟
3.7 步驟①——選擇回收集合
3.8 步驟②——根轉移
3.9 步驟③——轉移
3.10 標記信息的作用
3.11 總結
第4章 軟實時性
4.1 用戶的需求
4.2 預測轉移時間
4.3 預測可信度
4.4 GC暫停處理的調度
4.5 併發標記中的暫停處理
第5章 分代G1GC模式
5.1 不同點
5.2 新生代區域
5.3 分代對象轉移
5.4 執行過程簡述
5.5 分代選擇回收集合
5.6 設置最大新生代區域數
5.7 GC的切換
5.8 GC執行的時機
第6章 演算法篇總結
6.1 關係圖
6.2 優點
6.3 缺點
6.4 結束語
實現篇
第7章 準備工作
7.1 什麼是HotSpotVM
7.2 什麼是OpenJDK
7.3 獲取源碼
7.4 代碼結構
7.5 兩個特殊類
7.6 適用於各種操作系統的介面
第8章 對象管理功能
8.1 對象管理功能的介面
8.2 對象管理功能的全貌
8.3 CollectedHeap類
8.4 CollectorPolicy類
8.5 各個GC類
第9章 堆結構
9.1 VM堆
9.2 G1GC堆
9.3 常駐空間
第10章 分配器
10.1 內存分配的流程
10.2 VM堆的申請
10.3 VM堆的分配
10.4 對象的分配
10.5 TLAB
第11章 對象結構
11.1 oopDesc類
11.2 klassOopDesc類
11.3 Klass類
11.4 類之間的關係
11.5 不要在oopDesc類中定義虛函數
11.6 對象頭
第12章 HotSpotVM的線程管理
12.1 線程操作的抽象化
12.2 Thread類
12.3 線程的生命周期
12.4 Windows線程的創建
12.5 Windows線程的處理開始
12.6 Linux線程的創建
12.7 開始Linux線程的處理
第13章 線程的互斥處理
13.1 什麼是互斥處理
13.2 互斥量
13.3 監視器
13.4 監視器的實現
13.5 Monitor類
13.6 Mutex類
13.7 MutexLocker類
第14章 GC線程(並行篇)
14.1 並行執行的流程
14.2 AbstractWorkGang類
14.3 AbstractGangTask類
14.4 GangWorker類
14.5 並行GC的執行示例
第15章 GC線程(併發篇)
15.1 ConcurrentGCThread類
15.2 SuspendibleThreadSet類
15.3 安全點
15.4 VM線程
第16章 併發標記
16.1 併發標記的全貌
16.2 步驟①——初始標記階段
16.3 步驟②——併發標記階段
16.4 步驟③——最終標記階段
16.5 步驟④——存活對象計數
16.6 步驟⑤——收尾工作
第17章 轉移
17.1 轉移的全貌
17.2 步驟①——選擇回收集合
17.3 步驟②——根轉移
17.4 步驟③——轉移
第18章 預測與調度
18.1 根據歷史記錄進行預測
18.2 併發標記的調度
18.3 轉移的調度
第19章 準確式GC的實現
19.1 棧圖
19.2 句柄區域與句柄標記
第20章 寫屏障的性能開銷
20.1 運行時切換GC演算法
20.2 解釋器的寫屏障
20.3 JIT編譯器的寫屏障
後記
參考文獻