深入淺出Java虛擬機:JVM原理與實戰(zhàn)
本書主要以 Java 虛擬機的基本特性及運行原理為中心,深入淺出地分析 JVM 的組成結構和底層實現(xiàn),介紹了很多性能調(diào)優(yōu)的方案和工具的使用方法。最后還擴展介紹了 JMM 內(nèi)存模型的實現(xiàn)原理和 Java 編譯器的優(yōu)化機制,讓讀者不僅可以學習 JVM 的核心技術知識,還能夯實 JVM 調(diào)優(yōu)及代碼優(yōu)化的技術功底。
本書適合已具有一定 Java 編程基礎的開發(fā)人員、項目經(jīng)理、架構師及性能調(diào)優(yōu)工程師參考閱讀,同時,本書還可以作為廣大職業(yè)院校、計算機培訓班相關專業(yè)的教學參考用書。
李博,資深架構師,InfoQ平臺、阿里云社區(qū)專家博主,CSDN博客專家,51CTO講師,慕課網(wǎng)講師,Quarkus技術社區(qū)的熱衷參與者,參與過多個開源項目(Skywalking、Nacos、Pulsar等)的開發(fā)和深入研究。目前擔任公司內(nèi)部架構委員會副主席,主要研究方向是“基于Quarkus的云原生Java微服務架構的推進”和“GraalVM虛擬機的內(nèi)部化落地”。
第1章?Java語言的起源 7
1.1?Java發(fā)展的艱辛歷程 8
1.2?Java散發(fā)的獨特魅力 10
1.3?網(wǎng)絡時代帶來的挑戰(zhàn) 12
1.4?Java生態(tài)的體系結構 14
1.5?JVM的進化發(fā)展史 17
1.6?小結 19
第2章?初次接觸JVM 20
2.1?通過Oracle JDK搭建運行環(huán)境 21
2.2?通過Open JDK搭建運行環(huán)境 29
2.3?Open JDK和Oracle JDK的關系 35
2.4?小結 36
第3章?邁向JVM的第一步 38
3.1?JVM內(nèi)部七大“首腦” 39
3.2?JVM外部有利“輔助” 43
3.3?JVM內(nèi)部對象的探索發(fā)掘 47
3.4?JVM的OOM異常 51
3.5?JVM的總體內(nèi)存結構分布 54
3.6?小結 55
第4章?開始認識類加載系統(tǒng) 56
4.1?類加載系統(tǒng)的整體生命周期和流程 57
4.2?類加載系統(tǒng)為我們帶來了什么 63
4.3?Class字節(jié)碼的組成 70
4.4?小結 80
第5章?進入虛擬機核心世界 81
5.1?堆內(nèi)存的“管轄范圍” 82
5.2?內(nèi)存管理系統(tǒng)回收垃圾 86
5.3?垃圾回收的類型 98
5.4?方法區(qū) 101
5.5?執(zhí)行引擎子系統(tǒng) 105
5.6?對象描點標記的方法 107
5.7?對象描點標記的方法 110
5.8?小結 113
第6章?永遠線程安全的區(qū)域 114
6.1?虛擬機棧和PC寄存器 115
6.2?虛擬機執(zhí)行機制介紹 118
6.3?小結 122
第7章?虛擬機字節(jié)碼指令集 123
7.1?字節(jié)碼指令概述 124
7.2?字節(jié)碼指令執(zhí)行案例分析 134
7.3?小結 137
第8章?JVM深入分析運作原理 138
8.1?內(nèi)存分配及回收的依據(jù) 139
8.2?內(nèi)存分配及回收的策略 143
8.3?小結 146
第9章?JVM分析工具大全 147
9.1?JVM分析工具概述 148
9.2?常用JVM圖形化分析工具概述 159
9.3?JVM在線性能分析服務 166
9.4?小結 172
第10章?Arthas分析JVM問題定位 173
10.1?Arthas學習指南 174
10.2?Arthas分析OOM問題定位 182
10.3?Arthas分析FullGC問題定位 185
10.4?Arthas分析線程方面問題定位 187
10.5?小結 190
第11章?程序的編譯和代碼優(yōu)化 191
11.1?Java體系的3種編譯器 192
11.2?JIT編譯器 194
11.3?AOT編譯器 199
11.4?編譯技術的優(yōu)化 200
11.5?逃逸分析技術 207
11.6?小結 212
第12章?Java內(nèi)存模型和線程運作原理 213
12.1?Java內(nèi)存模型 214
12.2?線程實現(xiàn) 223
12.3?線程安全控制 227
12.4?線程的鎖優(yōu)化 228
12.5?小結 231