新到貨2本75折
深入解析Java虛擬機器HotSpot

深入解析Java虛擬機器HotSpot

  • 定價:474
  • 優惠價:87412
  • 運送方式:
  • 臺灣與離島
  • 海外
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
  • 可取貨點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
載入中...
  • 分享
 

內容簡介

很多JVM的底層技術細節你是否只瞭解表面?
面對JVM Crash或性能調優方面的問題時你是否會束手無策?
面對上層Java應用發生的偏離預期的行為是否會不知所措?
……
這本書以源碼分析為基礎,從運行時、垃圾回收器、即時編譯器3個維度全面、深入解析HotSpot VM的底層實現和工作機制,同時與上層的Java語言和庫結合,指導讀者解決JVM開發、JVM調優和JVM排錯方面遇到的各種問題。

廣度與深度兼顧:廣度上涵蓋Graal VM、CDS、Instrumentation、編譯重放、非標準位元組碼、RTM鎖、JIT調試工具、EpsilonGC/ShenandoahGC/ZGC、G1字串去重等重要知識點;深度上深入解析了C1、C2、G1GC、ObjectMonitor、Mutex、範本解譯器等的底層實現。
全書共 11 章,參考 OpenJDK 社區的劃分方式來組織內容,分為運行時、即時編譯器、垃圾回收器三個部分。
 
第一部分(第1~6章) 運行時
首先,從Java生態系統的角度,簡單介紹了JDK、JVM、JEP、HotSpot VM、Graal VM,引導讀者快速進入Java虛擬機器的世界;然後從源碼的角度深入解析了HotSpot VM的類可用機制、物件和類、運行時、範本解譯器和併發設施。

第二部分(第7~9章) 即時編譯器
首先重點介紹了即時編譯器技術、編譯理論、編譯器調試方法等編譯器的基礎知識;然後詳細講解了C1和C2兩個即時編譯器的實現原理、工作機制和優化方法。

第三部分(第10~11章) 垃圾回收器
首先全面介紹了Epsilon GC、Serial GC、Parallel GC、CMS GC、G1 GC、Shenandoah GC、ZGC等各種垃圾回收器,然後重點剖析了G1 GC。
 

作者介紹

楊易
Java開發工程師,就職于阿裡雲基礎設施部。.熱衷於研究程式設計語言的設計與實現,對Java語言的設計與實現有非常深入的研究,尤其是Java的虛擬機器HotSpot VM,在JVM的開發、調優和排錯方面積累了豐富的經驗。此外,在編譯器領域也有較深厚的積累。.有著自由軟體精神的開發者,是GitHub中國區followers數量排名前100的開源項目維護者。
 

目錄

第1章 Java大觀園 1
1.1 OpenJDK 1
1.2 JEP 2
1.3 Java虛擬機器 4
1.4 HotSpot VM 5
1.4.1 源碼模組 7
1.4.2 構建和調試 7
1.4.3 回歸測試 12
1.5 Graal VM 14
1.6 本章小結 16

第2章 類可用機制 17
2.1 類的載入 17
2.1.1 位元組碼 17
2.1.2 類載入器 19
2.1.3 文件解析 21
2.2 類的連結 23
2.2.1 位元組碼驗證 24
2.2.2 位元組碼重寫 24
2.2.3 方法連結 26
2.3 類的初始化 32
2.4 類的重定義 35
2.5 本章小結 36

第3章 對象和類 38
3.1 對象與類 38
3.2 對象 39
3.2.1 創建對象 39
3.2.2 對象頭 41
3.2.3 對象雜湊值 43
3.3 類 44
3.3.1 欄位遍歷 45
3.3.2 虛表 46
3.4 本章小結 48

第4章 運行時 49
4.1 執行緒創生紀 49
4.1.1 容器化支持 51
4.1.2 Java執行緒 52
4.1.3 虛擬機器執行緒 54
4.1.4 編譯器執行緒 57
4.1.5 服務執行緒 58
4.1.6 計時器執行緒 58
4.2 Java執行緒 58
4.2.1 執行緒啟動 60
4.2.2 執行緒停止 61
4.2.3 睡眠與中斷 63
4.3 棧幀 66
4.4 Java/JVM溝通 68
4.4.1 JNI 69
4.4.2 JavaCalls 72
4.5 Unsafe類 74
4.5.1 堆外記憶體 75
4.5.2 記憶體屏障 75
4.5.3 阻塞和喚醒 76
4.5.4 物件資料修改 76
4.6 本章小結 77

第5章 範本解譯器 78
5.1 解譯器體系 78
5.1.1 C++解譯器行為 78
5.1.2 範本解譯器行為 79
5.2 機器代碼片段 81
5.3 CodeCache 82
5.4 指令緩存刷新 84
5.5 解譯器生成 86
5.5.1 普通方法入口 86
5.5.2 方法加鎖 89
5.5.3 本地方法入口 90
5.5.4 標準位元組碼 91
5.5.5 非標準位元組碼 106
5.6 本章小結 107

第6章 併發設施 108
6.1 指令重排序 108
6.1.1 編譯器重排序 109
6.1.2 處理器重排序 110
6.2 記憶體模型 112
6.2.1 happens-before記憶體模型 113
6.2.2 Java記憶體模型 114
6.3 基礎設施 116
6.3.1 原子操作 116
6.3.2 ParkEvent 116
6.3.3 Parker 118
6.3.4 Monitor 120
6.4 鎖優化 126
6.4.1 偏向鎖 127
6.4.2 基本物件鎖 128
6.4.3 重量級鎖 128
6.4.4 RTM鎖 131
6.5 本章小結 132

第7章 編譯概述 133
7.1 編譯器簡介 133
7.1.1 運行時代碼生成 134
7.1.2 JIT編譯器 135
7.1.3 AOT編譯器 136
7.1.4 JVMCI JIT編譯器 136
7.2 即時編譯技術 137
7.2.1 分層編譯 137
7.2.2 棧上替換 138
7.2.3 退優化 139
7.3 編譯理論基礎 139
7.3.1 中間表示 139
7.3.2 基本塊與控制流圖 140
7.3.3 靜態單賦值 142
7.3.4 規範化 142
7.3.5 值編號 143
7.3.6 自頂向下重寫系統 144
7.3.7 迴圈不變代碼外提概述 144
7.4 調試方法 145
7.4.1 編譯日誌 145
7.4.2 編譯神諭 146
7.4.3 視覺化工具 146
7.5 本章小結 149

第8章 C1編譯器 150
8.1 編譯流程 150
8.1.1 進入C1 150
8.1.2 高級中間表示 152
8.1.3 低級中間表示 153
8.2 從位元組碼到HIR 155
8.2.1 識別基本塊 155
8.2.2 抽象解釋 156
8.3 HIR代碼優化 158
8.3.1 規範化 158
8.3.2 內聯 159
8.3.3 基本塊優化 160
8.3.4 值編號 160
8.3.5 陣列範圍檢查 162
8.3.6 迴圈不變代碼外提 162
8.4 從HIR到LIR 164
8.4.1 return生成 165
8.4.2 new生成 165
8.4.3 goto生成 166
8.4.4 線性掃描寄存器分配 167
8.5 本章小結 171

第9章 C2編譯器 172
9.1 編譯流程 172
9.1.1 進入C2 172
9.1.2 理想圖 174
9.1.3 理想圖流程概述 180
9.1.4 C2代碼優化 183
9.1.5 代碼生成流程 185
9.1.6 設置機器代碼 186
9.2 構造理想圖 187
9.2.1 構造示例 187
9.2.2 Identity、Ideal、GVN 191
9.3 機器無關優化 193
9.3.1 IGVN 193
9.3.2 逃逸分析 194
9.3.3 向量化 197
9.4 代碼生成 199
9.4.1 指令選擇 199
9.4.2 圖著色寄存器分配 200
9.5 本章小結 203

第10章 垃圾回收 204
10.1 垃圾回收基礎概述 204
10.1.1 GC Root 205
10.1.2 安全點 206
10.1.3 執行緒局部握手 208
10.1.4 GC屏障 209
10.2 Epsilon GC 209
10.2.1 源碼結構 209
10.2.2 EpsilonHeap 210
10.2.3 對象分配 211
10.2.4 回收垃圾 212
10.3 Serial GC 212
10.3.1 弱分代假說 212
10.3.2 卡表 213
10.3.3 Young GC 214
10.3.4 Full GC 218
10.3.5 世界停頓 221
10.4 Parallel GC 221
10.4.1 多執行緒垃圾回收 221
10.4.2 GC工作管理員 223
10.4.3 並行與併發 226
10.5 CMS GC 227
10.5.1 回收策略 227
10.5.2 物件丟失問題 228
10.5.3 Old GC週期 229
10.5.4 併發模式失敗 234
10.5.5 堆碎片化 235
10.6 G1 GC 235
10.6.1 簡介 235
10.6.2 混合回收 236
10.7 Shenandoah GC 237
10.8 ZGC 239
10.9 本章小結 241

第11章 G1 GC 242
11.1 G1 GC簡介 242
11.1.1 基於Region的堆 242
11.1.2 記憶集RSet 243
11.1.3 停頓預測模型 244
11.2 Young GC 245
11.2.1 選擇CSet 245
11.2.2 清理根集 246
11.2.3 處理RSet 247
11.2.4 對象複製 247
11.3 Mixed GC 248
11.3.1 SATB 249
11.3.2 全域併發標記 251
11.3.3 對象複製 254
11.4 Full GC 254
11.5 字串去重 255
11.6 本章小結 257
 

詳細資料

  • ISBN:9787111670315
  • 規格:平裝 / 258頁 / 16k / 19 x 26 x 1.29 cm / 普通級 / 單色印刷 / 初版
  • 出版地:中國

最近瀏覽商品

 

相關活動

  • 【科普、飲食、電腦】高寶電子書暢銷書展:人生就是選擇的總和,全展75折起
 

購物說明

溫馨提醒您:若您訂單中有購買簡體館無庫存/預售書或庫存於海外廠商的書籍,建議與其他商品分開下單,以避免等待時間過長,謝謝。

大陸出版品書況:因裝幀品質及貨運條件未臻完善,書況與台灣出版品落差甚大,封面老舊、出現磨痕、凹痕等均屬常態,故簡體字館除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。 

 

請注意,部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

調貨時間:若您購買海外庫存之商品,於您完成訂購後,商品原則上約45個工作天內抵台(若有將延遲另行告知)。為了縮短等待的時間,建議您將簡體書與其它商品分開訂購,以利一般商品快速出貨。 

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則

  • 翦商作者新作79折
  • 針灸匠張寶旬
  • 浪漫小說精選3本72折