深入解析Java虚拟机HotSpot杨易pdf下载pdf下载

深入解析Java虚拟机HotSpot杨易百度网盘pdf下载

作者:
简介:本篇主要提供深入解析Java虚拟机HotSpot杨易pdf下载
出版社:互动创新图书专营店
出版时间:
pdf下载价格:9.00¥


预览


内容介绍

 书[0名0]:  深入解析Java虚拟[1机1]HotSpot|8077278
 图书定价: 79元
 图书作者: 杨易
 出版社:  [1机1]械工业出版社
 出版日期:  2020/12/11 0:00:00
 ISBN号: 9787111670315
 开本: 16开
 页数: 267
 版次: 1-1
 作者简介
杨易 著:作者介绍
杨易
Java开发工程师,就职于阿里云基础设施部。
热衷于研究编程语言的设计与实现,对Java语言的设计与实现有非常深入的研究,尤其是Java的虚拟[1机1]HotSpot VM,在JVM的开发、调[0优0]和排错方[mian]积累了丰富的[纟巠]验。此外,在编译器[令页]域也有较深厚的积累。
有着自由软[亻牛]精神的开发者,是GitHub中[0国0]区followers数量排[0名0]前100的开源项目维护者。喜欢各种[亲斤]鲜技术和[亲斤]鲜事物,对服务端编程、逆向安全略[0知0]一二。
 内容简介
内容介绍
很多JVM的底层技术细节你是否只了解表[mian]?
[mian]对JVM Crash或性能调[0优0]方[mian]的问题时你是否[0会0]束手无策?
[mian]对上层Java应用发生的偏离预期的行为是否[0会0]不[0知0]所措?
......
这本书以源码分析为基础,从运行时、垃圾回收器、即时编译器3个维度全[mian]、深入解析HotSpot VM的底层实现和工作[1机1]制,同时与上层的Java语言和库结合,指导读者解决JVM开发、JVM调[0优0]和JVM排错方[mian]遇到的各种问题。
广度与深度兼顾:广度上涵盖Graal VM、CDS、Instrumentation、编译重放、非标准字节码、RTM锁、JIT调试工具、EpsilonGC/ShenandoahGC/ZGC、G1字符串去重等重要[0知0]识点;深度上深入解析了C1、C2、G1GC、ObjectMonitor、Mutex、模板解释器等的底层实现。
全书共 11 章,参考 OpenJDK 社区的划分方式来组织内容,分为运行时、即时编译器、垃圾回收器三个部分。
[0第0]一部分([0第0]1~6章) 运行时
[0首0]先,从Java生态系统的角度,简单介绍了JDK、JVM、JEP、HotSpot VM、Graal VM,引导读者快速进入Java虚拟[1机1]的世界;然后从源码的角度深入解析了HotSpot VM的类可用[1机1]制、对象和类、运行时、模板解释器和并发设施。
[0第0]二部分([0第0]7~9章) 即时编译器
[0首0]先重点介绍了即时编译器技术、编译理论、编译器调试方[0法0]等编译器的基础[0知0]识;然后详细讲解了C1和C2两个即时编译器的实现原理、工作[1机1]制和[0优0]化方[0法0]。
[0第0]三部分([0第0]10~11章) 垃圾回收器
[0首0]先全[mian]介绍了Epsilon GC、Serial GC、Parallel GC、CMS GC、G1 GC、Shenandoah GC、ZGC等各种垃圾回收器,然后重点剖析了G1 GC。
 目录

前  言
[0第0]1章 Java[0大0]观园 1
1.1 OpenJDK 1
1.2 JEP 2
1.3 Java虚拟[1机1] 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
[0第0]2章 类可用[1机1]制 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 方[0法0]链接 26
2.3 类的初始化 32
2.4 类的重定义 35
2.5 本章小结 36
[0第0]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
[0第0]4章 运行时 49
4.1 线程创生纪 49
4.1.1 容器化支持 51
4.1.2 Java线程 52
4.1.3 虚拟[1机1]线程 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
[0第0]5章 模板解释器 78
5.1 解释器体系 78
5.1.1 C++解释器行为 78
5.1.2 模板解释器行为 79
5.2 [1机1]器代码片段 81
5.3 CodeCache 82
5.4 指令缓存刷[亲斤] 84
5.5 解释器生成 86
5.5.1 普通方[0法0]入口 86
5.5.2 方[0法0]加锁 89
5.5.3 本地方[0法0]入口 90
5.5.4 标准字节码 91
5.5.5 非标准字节码 106
5.6 本章小结 107
[0第0]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 锁[0优0]化 126
6.4.1 偏向锁 127
6.4.2 基本对象锁 128
6.4.3 重量级锁 128
6.4.4 RTM锁 131
6.5 本章小结 132
[0第0]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 [*][0优0]化 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 调试方[0法0] 145
7.4.1 编译日志 145
7.4.2 编译神谕 146
7.4.3 可视化工具 146
7.5 本章小结 149
[0第0]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代码[0优0]化 158
8.3.1 规范化 158
8.3.2 内联 159
8.3.3 基本块[0优0]化 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
[0第0]9章 C2编译器 172
9.1 编译流程 172
9.1.1 进入C2 172
9.1.2 理想图 174
9.1.3 理想图流程概述 180
9.1.4 C2代码[0优0]化 183
9.1.5 代码生成流程 185
9.1.6 设置[1机1]器代码 186
9.2 构造理想图 187
9.2.1 构造示例 187
9.2.2 Identity、Ideal、GVN 191
9.3 [1机1]器无关[0优0]化 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
[0第0]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 弱分代[jia]说 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
[0第0]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

 编辑推荐
本书内容翔实,结合实际工作中的具体问题,对JVM进行了深入、全方位的剖析,如栈上替换、模板解释器、即时编译器、AppCDS、RTM锁、编译重放,等等。无论是上层架构,还是底层设计,都娓娓道来, 无论是Java开发者还是C++开发者,都值得认真一读,强烈推荐。
—— 赵海平  前Facebook[0首0]席工程师,前阿里巴巴高级研究员
想要编写出[0优0]秀的软[亻牛],就势必要对已有的、底层的软[亻牛]栈有清晰的了解,这样才能在遇到麻烦时直指问题核心,在设计[亲斤]方案时总览全局。很高兴看到本书的出版,它不仅讲解了运行时、即时编译器、垃圾回收器的原理,还从[0当0]今应用[*]广泛的Java语言实现——HotSpot VM出发,配合代码示例、算[0法0]图解、调试技巧,帮助读者跨越[0学0][*]中理论和实践的鸿沟。如果你在平时的工作[0学0][*]中需要[0大0]量使用Java,想要[扌是]升软[亻牛]开发和调试的效率,又恰[女子]对每天使用的工具的内部黑魔[0法0]感兴趣,那么这本书将给你惊喜。
—— 彭飞  NVIDIA高级编译器工程师
[0大0]多数程序员都有中年危[1机1],而深入研究技术,将技术做深、做精、做专是技术人员避免中年危[1机1]的明智之举。对于Java程序员来说,这本书能带你走向Java底层,深入了解HotSpot虚拟[1机1]的运行原理与实现[1机1]制,是走向Java技术[1巅1]峰的[不1二]选择。
—— 马智  《深入解析Java编译器:源码剖析与实例详解》作者