新一代垃圾回收器ZGC設計與實現 ,

作者:彭成寒

出版社:機械工業出版社

ISBN:9787111633655

$42.45

Product ID: 132600 SKU: 9787111633655 Categories: , Tags: , ,

Java11版本包含一個全新的垃圾收集器ZGC,它由Oracle開發,承諾在數TB的堆上具有非常低的暫停時間。ZGC是2017年Oracle公司貢獻給OpenJDK社區的,正式成為OpenJDK的開源項目。ZGC所針對的是這些在未來普遍存在的大容量記憶體:TB級別的堆容量,具有很低的停頓時間(小於10毫秒),對整體應用性能的影響也很小(對輸送量的影響低於15%)。ZGC所採用的機制也可以在未來進行擴展,以支持一些令人興奮的特性,如多層堆(用於熱物件的DRAM和用於低頻訪問對象的NVMe快閃記憶體)或壓縮堆。

本書詳細介紹ZGC涉及的基本概念和運行原理,以及調優方法。主要內容共9章,主要內容有:垃圾回收器概述、ZGC記憶體管理、ZGC執行緒、ZGC垃圾回收演算法的設計、ZGC日志解讀、ZGC參數和基準測試、ZGC的編譯調試、ZGC特性總結和展望、ZGC的編譯調試、Shenandoah簡介等。

目錄

前言
第1章 垃圾回收器概述 1
1.1 垃圾回收演算法 2
1.2 JVM垃圾回收器 2
1.2.1 串列回收 3
1.2.2 並行回收 4
1.2.3 CMS 4
1.2.4 G1 5
1.2.5 ZGC 15
1.2.6 Shenandoah 19

第2章 ZGC記憶體管理 21
2.1 作業系統位址管理 21
2.2 ZGC記憶體管理 22
2.2.1 多視圖映射 25
2.2.2 ZGC多視圖映射 27
2.2.3 頁面設計 30
2.2.4 對NUMA的支持 31
2.2.5 ZGC中的實體記憶體管理 32
2.2.6 ZGC中的虛擬記憶體管理 34
2.2.7 ZGC記憶體預分配 35
2.3 ZGC物件分配管理 36
2.3.1 對象空間分配 39
2.3.2 頁面分配 42

第3章 ZGC執行緒 48
3.1 執行緒的基本概念 48
3.2 控制執行緒 49
3.2.1 時鐘觸發器 51
3.2.2 消息觸發 53
3.2.3 VMThread 56
3.3 工作執行緒 59
3.4 垃圾回收觸發的時機 62

第4章 ZGC垃圾回收演算法的設計 67
4.1 併發垃圾回收演算法 67
4.1.1 併發垃圾回收演算法概述 67
4.1.2 ZGC併發演算法的設計 68
4.2 併發處理 70
4.2.1 併發處理概述 71
4.2.2 ZGC併發處理演算法 73
4.2.3 ZGC併發處理演算法演示 75

第5章 ZGC垃圾回收演算法的實現 78
5.1 垃圾回收的實現 78
5.1.1 初始標記 78
5.1.2 併發標記 88
5.1.3 再標記和非強根並行標記 94
5.1.4 非強引用併發標記和引用併發處理 98
5.1.5 重置轉移集 105
5.1.6 回收無效的頁面 106
5.1.7 選擇待回收的頁面 106
5.1.8 初始化待轉移集合的轉移表 108
5.1.9 初始轉移 108
5.1.10 併發轉移 110
5.1.11 垃圾回收演算法再討論 111
5.2 垃圾回收演算法演示 112

第6章 ZGC日誌解讀 120
6.1 Xlog簡介 120
6.2 測試用例設計 123
6.3 ZGC初始化信息 125
6.4 垃圾回收觸發信息 127
6.5 垃圾回收過程中每一步的資訊 130
6.6 統計資訊 137
6.6.1 垃圾回收器信息 137
6.6.2 競爭資訊 137
6.6.3 同步等待資訊 139
6.6.4 記憶體資訊 140
6.6.5 垃圾回收步驟資訊 142
6.6.6 子階段資訊 144
6.6.7 執行緒信息 146

第7章 ZGC參數和基準測試 147
7.1 參數簡介 147
7.1.1 ZGC新引入參數 147
7.1.2 GC通用參數 149
7.2 測試評估 150
7.2.1 測試準備 151
7.2.2 測試與測試報告 154

第8章 ZGC的發展與展望 160
8.1 類回收 161
8.2 單代回收 164
8.3 新功能和多平臺 165

第9章 JVM編譯調試 166
9.1 下載原始程式碼 166
9.2 代碼概覽 167
9.3 編譯JVM 168
9.4 調試ZGC 169
9.4.1 啟動GDB 170
9.4.2 對象分配 170
9.4.3 觸發垃圾回收 172
9.4.4 初始標記 172
9.4.5 併發標記 173
9.4.6 初始轉移 174
9.4.7 併發轉移 176
9.4.8 重定位 176
9.5 使用HSDB學習JVM中物件佈局 178
9.5.1 C++對象佈局原理 178
9.5.2 Java對象佈局原理 180
9.5.3 用HSDB分析Java物件佈局 180

第10章 Shenandoah簡介 192
10.1 概述 192
10.2 Shenandoah垃圾回收策略 193
10.3 Shenandoah垃圾回收演算法 194
10.3.1 正常回收演算法 195
10.3.2 遍歷回收演算法 197

附錄A Cassandra簡介 200
附錄B YCSB簡介 202

作者介紹

彭成寒,高級Java工程師,目前主要從事風控系統設計、演算法建模、大資料處理等工作,有超過10年的Java和C++開發經驗。

出版地

大陸

出版日期

09/01/2019

印刷

單色印刷

版別

初版

裝訂

平裝

語系

簡體中文

頁數

212