JVM G1源碼分析和調優( 簡體 字) | |
作者:彭成寒 | 類別:1. -> 程式設計 -> JAVA -> Java |
出版社:機械工業出版社 | 3dWoo書號: 50916 詢問書籍請說出此書號! 有庫存 NT售價: 445 元 |
出版日:3/28/2019 | |
頁數:285 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787111621973 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
前 言
第1章 垃圾回收概述 1 1.1 Java發展概述 1 1.2 本書常見術語 4 1.3 回收算法概述 6 1.3.1 分代管理算法 7 1.3.2 復制算法 7 1.3.3 標記清除 8 1.3.4 標記壓縮 9 1.3.5 算法小結 9 1.4 JVM垃圾回收器概述 9 1.4.1 串行回收 9 1.4.2 并行回收 10 1.4.3 并發標記回收 10 1.4.4 垃圾優先回收 10 第2章 G1的基本概念 14 2.1 分區 14 2.2 G1停頓預測模型 20 2.3 卡表和位圖 22 2.4 對象頭 24 2.5 內存分配和管理 27 2.6 線程 30 2.6.1 棧幀 32 2.6.2 句柄 34 2.6.3 JVM本地方法棧中的對象 36 2.6.4 Java本地方法棧中的對象 40 2.7 日志解讀 40 2.8 參數介紹和調優 41 第3章 G1的對象分配 43 3.1 對象分配概述 43 3.2 快速分配 46 3.3 慢速分配 56 3.3.1 大對象分配 58 3.3.2 最后的分配嘗試 60 3.4 G1垃圾回收的時機 61 3.4.1 分配時發生回收 61 3.4.2 外部調用的回收 61 3.5 參數介紹和調優 62 第4章 G1的Ref?ine線程 64 4.1 記憶集 64 4.2 Ref?ine線程的功能及原理 72 4.2.1 抽樣線程 72 4.2.2 管理RSet 74 4.2.3 Mutator處理DCQ 78 4.2.4 Ref?ine線程的工作原理 78 4.3 Ref?inement Zone 85 4.4 RSet涉及的寫屏障 86 4.5 日志解讀 87 4.6 參數介紹和調優 90 第5章 新生代回收 93 5.1 YGC算法概述 93 5.2 YGC代碼分析 96 5.2.1 并行任務 96 5.2.2 其他處理 115 5.3 YGC算法演示 116 5.3.1 選擇CSet 117 5.3.2 根處理 117 5.3.3 RSet處理 118 5.3.4 復制 119 5.3.5 Redirty 120 5.3.6 釋放空間 120 5.4 日志解讀 121 5.4.1 YGC日志 121 5.4.2 大對象日志分析 125 5.4.3 對象年齡日志分析 125 5.5 參數介紹和調優 126 第6章 混合回收 129 6.1 并發標記算法詳解 130 6.2 并發標記算法的難點 133 6.2.1 三色標記法 133 6.2.2 難點示意圖 133 6.2.3 再談寫屏障 135 6.3 G1中混合回收的步驟 141 6.4 混合回收中并發標記處理的線程 145 6.4.1 并發標記線程啟動的時機 147 6.4.2 根掃描子階段 148 6.4.3 并發標記子階段 152 6.4.4 再標記子階段 159 6.4.5 清理子階段 160 6.4.6 啟動混合收集 167 6.5 并發標記算法演示 170 6.5.1 初始標記子階段 171 6.5.2 根掃描子階段 171 6.5.3 并發標記子階段 171 6.5.4 再標記子階段 172 6.5.5 清理子階段 173 6.6 GC活動圖 174 6.7 日志解讀 174 6.8 參數優化 178 第7章 Full GC 181 7.1 Evac失敗 181 7.2 串行FGC 187 7.2.1 標記活躍對象 188 7.2.2 計算對象的新地址 190 7.2.3 更新引用對象的地址 190 7.2.4 移動對象完成壓縮 193 7.2.5 后處理 194 7.3 并行FGC 196 7.3.1 并行標記活躍對象 197 7.3.2 計算對象的新地址 198 7.3.3 更新引用對象的地址 200 7.3.4 移動對象完成壓縮 200 7.3.5 后處理 201 7.4 日志解讀 201 7.5 參數介紹和調優 202 第8章 G1中的引用處理 203 8.1 引用概述 203 8.2 可回收對象發現 207 8.3 在GC時的處理發現列表 210 8.4 重新激活可達的引用 214 8.5 日志解讀 215 8.6 參數介紹和調優 215 第9章 G1的新特性:字符串去重 217 9.1 字符串去重概述 217 9.2 日志解讀 220 9.3 參數介紹和調優 222 9.4 字符串去重和String.intern的區別 222 9.5 String.intern中的實現 223 第10章 線程中的安全點 226 10.1 安全點的基本概念 226 10.2 G1并發線程進入安全點 227 10.3 解釋線程進入安全點 230 10.4 編譯線程進入安全點 230 10.5 正在執行本地代碼的線程進入安全點 233 10.6 安全點小結 236 10.7 日志分析 236 10.8 參數介紹和調優 238 第11章 垃圾回收器的選擇 241 11.1 如何衡量垃圾回收器 241 11.2 G1調優的方向 243 第12章 新一代垃圾回收器 247 12.1 Shenandoah 247 12.2 ZGC 258 附錄A 編譯調試JVM 262 附錄B 本地內存跟蹤 272 附錄C 閱讀JVM需要了解的C++知識 276 G1作為JVM中*新、*成熟的垃圾回收器,已經廣泛應用在眾多公司的生產環境中。本書詳細介紹G1涉及的基本概念和運行原理,以及調優方法。主要內容共12章,主要內容有:第1~2章介紹垃圾回收的歷史和應用的算法,以及基本概念。第3~7章從多方面分析G1的運行原理,如G1是如何分配對象的,G1的Refine線程、新生代回收、混合回收、FullGC等。第8章介紹垃圾回收過程中如何處理引用,第9章介紹G1引入的新特性:字符串去重,第10章介紹G1垃圾回收過程中線程如何達到安全點,第11章介紹如何選擇垃圾回收器,第12章介紹了下一代垃圾回收器Shenandoah和ZGC。另外,為了降低學習難度,還給出了三個附錄:附錄A介紹如何開始閱讀和調試JVM代碼,附錄B介紹如何使用NMT對JVM內存進行跟蹤和調試,附錄C介紹了Java程序員閱讀JVM需要知道的一些C++知識。
|