深入剖析Java虛擬機(jī):源碼剖析與實(shí)例詳解(基礎(chǔ)卷) 版權(quán)信息
- ISBN:9787111689898
- 條形碼:9787111689898 ; 978-7-111-68989-8
- 裝幀:一般膠版紙
- 冊數(shù):暫無
- 重量:暫無
- 所屬分類:>>
深入剖析Java虛擬機(jī):源碼剖析與實(shí)例詳解(基礎(chǔ)卷) 本書特色
華為JDK負(fù)責(zé)人等大咖薦!Java大神全面深入剖Java虛擬機(jī)HotSpot源碼實(shí)現(xiàn),詳解類的生命周期和垃圾收集器原理
深入剖析Java虛擬機(jī):源碼剖析與實(shí)例詳解(基礎(chǔ)卷) 內(nèi)容簡介
本書以工業(yè)級虛擬機(jī)HotSpot的源代碼分析為基礎(chǔ),詳細(xì)介紹了對象的二分模型、類的加載機(jī)制、類及常量池的解析、方法及變量解析、對象的創(chuàng)建和初始化、Serial和Serial Old垃圾收集器、Java引用類型等的實(shí)現(xiàn)原理,同時(shí)對重點(diǎn)源代碼的實(shí)現(xiàn)進(jìn)行了詳細(xì)解讀,讓讀者真正掌握HotSpot虛擬機(jī)運(yùn)行的每個(gè)細(xì)節(jié)。本書共13章,章節(jié)的前后順序基本都是按類的生命周期進(jìn)行介紹。本書對于HotSpot VM的基礎(chǔ)功能模塊進(jìn)行了源碼剖析,力求交待清楚每個(gè)重要知識點(diǎn)的實(shí)現(xiàn)細(xì)節(jié)和背后的運(yùn)行原理,同時(shí)還會(huì)用大量的實(shí)例和配圖幫助讀者更好的理解。
深入剖析Java虛擬機(jī):源碼剖析與實(shí)例詳解(基礎(chǔ)卷) 目錄
前言
第1章 認(rèn)識HotSpot VM 1
1.1 初識JVM 1
1.2 編譯OpenJDK 8 3
1.2.1 準(zhǔn)備編譯環(huán)境 3
1.2.2 下載源代碼 3
1.2.3 編譯源代碼 4
1.2.4 通過GDB調(diào)試源代碼 6
1.2.5 通過Eclipse調(diào)試源代碼 7
1.3 HotSpot VM源代碼結(jié)構(gòu) 9
1.4 啟動(dòng)HotSpot VM 11
第2章 二分模型 17
2.1 Java類的表示——Klass 17
2.1.1 Klass類 18
2.1.2 InstanceKlass類 26
2.1.3 InstanceKlass類的子類 29
2.1.4 ArrayKlass類 34
2.1.5 TypeArrayKlass類 35
2.1.6 ObjArrayKlass類 40
2.2 Java對象的表示——oop 46
2.2.1 oopDesc類 46
2.2.2 markOopDesc類 48
2.2.3 instanceOopDesc類 49
2.2.4 arrayOopDesc類 51
2.2.5 arrayOopDesc類的子類 51
2.3 操作句柄——Handle 54
2.3.1 句柄Handle的定義與創(chuàng)建 55
2.3.2 句柄Handle的釋放 57
第3章 類的加載 62
3.1 類加載器 62
3.1.1 引導(dǎo)類加載器/啟動(dòng)類加載器 62
3.1.2 擴(kuò)展類加載器 64
3.1.3 應(yīng)用類加載器/系統(tǒng)類加載器 65
3.1.4 構(gòu)造類加載器實(shí)例 65
3.1.5 類的雙親委派機(jī)制 68
3.2 預(yù)加載類 83
3.2.1 核心類的預(yù)加載 83
3.2.2 數(shù)組的預(yù)加載 87
3.3 Java主類的裝載 88
3.4 觸發(fā)類的裝載 94
第4章 類與常量池的解析 97
4.1 類的解析 97
4.1.1 Class文件格式 97
4.1.2 ClassFileParser類簡介 98
4.1.3 ClassFileStream類簡介 99
4.1.4 解析類文件 102
4.1.5 保存解析結(jié)果 109
4.2 常量池的解析 116
4.2.1 ConstantPool類 117
4.2.2 創(chuàng)建ConstantPool實(shí)例 117
4.2.3 解析常量池項(xiàng) 122
第5章 字段的解析 136
5.1 字段的解析基礎(chǔ) 136
5.1.1 FieldAllocationCount與FieldAllocationType類 136
5.1.2 為字段分配內(nèi)存空間 139
5.1.3 獲取字段信息 141
5.2 偽共享 145
5.3 字段的內(nèi)存布局 148
5.3.1 靜態(tài)字段內(nèi)存塊的偏移量 148
5.3.2 非靜態(tài)字段內(nèi)存塊的偏移量 149
5.3.3 計(jì)算每個(gè)字段的偏移量 154
5.3.4 @Contended字段的偏移量 156
5.4 字段的注入 158
5.5 對象類型字段的遍歷 165
第6章 方法的解析 174
6.1 Method與ConstMethod類 174
6.1.1 Method類 174
6.1.2 ConstMethod類 177
6.2 調(diào)用parse_methods()函數(shù)解析方法 178
6.2.1 創(chuàng)建Method與ConstMethod實(shí)例 182
6.2.2 保存方法解析信息 187
6.3 klassVtable虛函數(shù)表 187
6.3.1 klassVtable類 188
6.3.2 計(jì)算vtable的大小 189
6.3.3 vtable的初始化 200
6.4 klassItable虛函數(shù)表 209
6.4.1 klassItable類 209
6.4.2 計(jì)算itable的大小 211
6.4.3 itable的初始化 213
第7章 類的連接與初始化 220
7.1 類的連接 220
7.2 類的驗(yàn)證 224
7.3 類的重寫 227
7.3.1 生成常量池緩存項(xiàng)索引 228
7.3.2 重寫字節(jié)碼指令 234
7.3.3 創(chuàng)建常量池緩存 238
7.4 方法的連接 244
7.5 類的初始化 246
第8章 運(yùn)行時(shí)數(shù)據(jù)區(qū) 250
8.1 HotSpot VM的內(nèi)存劃分 250
8.2 元空間 252
8.2.1 元空間的數(shù)據(jù)結(jié)構(gòu) 253
8.2.2 內(nèi)存塊的管理 256
8.2.3 內(nèi)存分配 258
8.2.4 內(nèi)存回收 262
8.3 堆空間 267
8.3.1 CollectedHeap、Generation與Space類 268
8.3.2 Java堆的回收策略 277
8.3.3 Java堆的初始化 288
第9章 類對象的創(chuàng)建 299
9.1 對象的創(chuàng)建 299
9.2 對象的內(nèi)存分配 311
9.2.1 在TLAB中分配內(nèi)存 311
9.2.2 在堆中分配內(nèi)存 322
9.2.3 添加對象偏移表記錄 335
第10章 垃圾回收 344
10.1 分代垃圾回收 344
10.1.1 Serial和Serial Old垃圾收集器 344
10.1.2 復(fù)制算法和“標(biāo)記-整理”算法 346
10.1.3 卡表 352
10.2 垃圾回收線程 358
10.3 安全點(diǎn) 370
10.3.1 關(guān)于安全點(diǎn) 370
10.3.2 阻塞線程和狀態(tài)切換線程進(jìn)入安全點(diǎn) 376
10.3.3 解釋線程進(jìn)入安全點(diǎn) 379
10.3.4 編譯線程進(jìn)入安全點(diǎn) 383
10.3.5 執(zhí)行本地代碼線程進(jìn)入安全點(diǎn) 385
第11章 Serial垃圾收集器 388
11.1 觸發(fā)YGC 388
11.2 年輕代的垃圾回收 389
11.3 標(biāo)記普通的根對象 403
11.4 標(biāo)記老年代引用的對象 415
11.5 遞歸標(biāo)記活躍對象并復(fù)制 422
第12章 Serial Old垃圾收集器 428
12.1 觸發(fā)FGC 428
12.2 標(biāo)記活躍對象 431
12.3 計(jì)算活躍對象的地址 440
12.4 更新對象的引用地址 451
12.5 移動(dòng)所有活躍對象 457
12.6 更新偏移表與卡表 460
第13章 Java引用類型 463
13.1 Java引用類型簡介 463
13.2 查找引用類型 469
13.3 軟引用 481
13.4 弱引用 490
13.5 虛引用 492
13.6 *終引用 495
展開全部
深入剖析Java虛擬機(jī):源碼剖析與實(shí)例詳解(基礎(chǔ)卷) 作者簡介
馬智 有多年的Java開發(fā)經(jīng)驗(yàn),先后在掌游天下和京東集團(tuán)任軟件研發(fā)工程師。對編程語言的底層實(shí)現(xiàn)有濃厚的興趣,深入研究過OpenJDK的源碼實(shí)現(xiàn)。著有《深入解析Java編譯器:源碼剖析與實(shí)例詳解》一書,頗受讀者好評。