新書推薦:
《
亚述:世界历史上第一个帝国的兴衰
》
售價:HK$
107.8
《
大处着眼:持久战与《论持久战》
》
售價:HK$
85.8
《
人工智能与大数据:采煤机智能制造
》
售價:HK$
96.8
《
未来漫游指南:昨日科技与人类未来
》
售價:HK$
97.9
《
新民说·逝去的盛景:宋朝商业文明的兴盛与落幕(上下册)
》
售價:HK$
173.8
《
我从何来:自我的心理学探问
》
售價:HK$
119.9
《
失败:1891—1900 清王朝的变革、战争与排外
》
售價:HK$
85.8
《
送你一匹马(“我不求深刻,只求简单。”看三毛如何拒绝内耗,为自己而活)
》
售價:HK$
64.9
|
編輯推薦: |
(1)作者是阿里云Java技术专家,热衷于研究编程语言的设计与实现,对Java虚拟机和编译器都有较深入的研究。(2)深入分析HotSpot VM的核心源码,全面解析运行时、垃圾回收器、即时编译器的实现原理和工作机制(3)详细描述虚拟机底层实现,同时与上层Java应用和库相结合,为JVM的开发、调优和排错指明方向
|
內容簡介: |
内容介绍
很多JVM的底层技术细节你是否只了解表面?
面对JVM Crash或性能调优方面的问题时你是否会束手无策?
面对上层Java应用发生的偏离预期的行为是否会不知所措?
……
这本书以源码分析为基础,从运行时、垃圾回收器、即时编译器3个维度全面、深入解析HotSpot VM的底层实现和工作机制,同时与上层的Java语言和库结合,指导读者解决JVM开发、JVM调优和JVM排错方面遇到的各种问题。
广度与深度兼顾:广度上涵盖Graal VM、CDS、Instrumentation、编译重放、非标准字节码、RTM锁、JIT调试工具、EpsilonGCShenandoahGCZGC、G1字符串去重等重要知识点;深度上深入解析了C1、C2、G1GC、ObjectMonitor、Mutex、模板解释器等的底层实现。内容介绍
很多JVM的底层技术细节你是否只了解表面?
面对JVM Crash或性能调优方面的问题时你是否会束手无策?
面对上层Java应用发生的偏离预期的行为是否会不知所措?
……
这本书以源码分析为基础,从运行时、垃圾回收器、即时编译器3个维度全面、深入解析HotSpot VM的底层实现和工作机制,同时与上层的Java语言和库结合,指导读者解决JVM开发、JVM调优和JVM排错方面遇到的各种问题。
广度与深度兼顾:广度上涵盖Graal VM、CDS、Instrumentation、编译重放、非标准字节码、RTM锁、JIT调试工具、EpsilonGCShenandoahGCZGC、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大观园11.1 OpenJDK11.2 JEP21.3 Java虚拟机41.4 HotSpot VM51.4.1 源码模块71.4.2 构建和调试71.4.3 回归测试121.5 Graal VM141.6 本章小结16第2章 类可用机制172.1 类的加载172.1.1 字节码172.1.2 类加载器192.1.3 文件解析212.2 类的链接232.2.1 字节码验证242.2.2 字节码重写242.2.3 方法链接262.3 类的初始化322.4 类的重定义352.5 本章小结36第3章 对象和类383.1 对象与类383.2 对象393.2.1 创建对象393.2.2 对象头413.2.3 对象哈希值433.3 类443.3.1 字段遍历453.3.2 虚表463.4 本章小结48第4章 运行时494.1 线程创生纪494.1.1 容器化支持514.1.2 Java线程524.1.3 虚拟机线程544.1.4 编译器线程574.1.5 服务线程584.1.6 计时器线程584.2 Java线程584.2.1 线程启动604.2.2 线程停止614.2.3 睡眠与中断634.3 栈帧664.4 JavaJVM沟通684.4.1 JNI694.4.2 JavaCalls724.5 Unsafe类744.5.1 堆外内存754.5.2 内存屏障754.5.3 阻塞和唤醒764.5.4 对象数据修改764.6 本章小结77第5章 模板解释器785.1 解释器体系785.1.1 C++解释器行为785.1.2 模板解释器行为795.2 机器代码片段815.3 CodeCache825.4 指令缓存刷新845.5 解释器生成865.5.1 普通方法入口865.5.2 方法加锁895.5.3 本地方法入口905.5.4 标准字节码915.5.5 非标准字节码1065.6 本章小结107第6章 并发设施1086.1 指令重排序1086.1.1 编译器重排序1096.1.2 处理器重排序1106.2 内存模型1126.2.1 happens-before内存模型1136.2.2 Java内存模型1146.3 基础设施1166.3.1 原子操作1166.3.2 ParkEvent1166.3.3 Parker1186.3.4 Monitor1206.4 锁优化1266.4.1 偏向锁1276.4.2 基本对象锁1286.4.3 重量级锁1286.4.4 RTM锁1316.5 本章小结132第7章 编译概述1337.1 编译器简介1337.1.1 运行时代码生成1347.1.2 JIT编译器1357.1.3 AOT编译器1367.1.4 JVMCI JIT编译器1367.2 即时编译技术1377.2.1 分层编译1377.2.2 栈上替换1387.2.3 退优化1397.3 编译理论基础1397.3.1 中间表示1397.3.2 基本块与控制流图1407.3.3 静态单赋值1427.3.4 规范化1427.3.5 值编号1437.3.6 自顶向下重写系统1447.3.7 循环不变代码外提概述1447.4 调试方法1457.4.1 编译日志1457.4.2 编译神谕1467.4.3 可视化工具1467.5 本章小结149第8章 C1编译器1508.1 编译流程1508.1.1 进入C11508.1.2 高级中间表示1528.1.3 低级中间表示1538.2 从字节码到HIR1558.2.1 识别基本块1558.2.2 抽象解释1568.3 HIR代码优化1588.3.1 规范化1588.3.2 内联1598.3.3 基本块优化1608.3.4 值编号1608.3.5 数组范围检查1628.3.6 循环不变代码外提1628.4 从HIR到LIR1648.4.1 return生成1658.4.2 new生成1658.4.3 goto生成1668.4.4 线性扫描寄存器分配1678.5 本章小结171第9章 C2编译器1729.1 编译流程1729.1.1 进入C21729.1.2 理想图1749.1.3 理想图流程概述1809.1.4 C2代码优化1839.1.5 代码生成流程1859.1.6 设置机器代码1869.2 构造理想图1879.2.1 构造示例1879.2.2 Identity、Ideal、GVN1919.3 机器无关优化1939.3.1 IGVN1939.3.2 逃逸分析1949.3.3 向量化1979.4 代码生成1999.4.1 指令选择1999.4.2 图着色寄存器分配2009.5 本章小结203第10章 垃圾回收20410.1 垃圾回收基础概述20410.1.1 GC Root20510.1.2 安全点20610.1.3 线程局部握手20810.1.4 GC屏障20910.2 Epsilon GC20910.2.1 源码结构20910.2.2 EpsilonHeap21010.2.3 对象分配21110.2.4 回收垃圾21210.3 Serial GC21210.3.1 弱分代假说
|
內容試閱:
|
第1章 Java大观园1
1.1 OpenJDK1
1.2 JEP2
1.3 Java虚拟机4
1.4 HotSpot VM5
1.4.1 源码模块7
1.4.2 构建和调试7
1.4.3 回归测试12
1.5 Graal VM14
1.6 本章小结16
第2章 类可用机制17
2.1 类的加载17
2.1.1 字节码17前言第1章 Java大观园11.1 OpenJDK11.2 JEP21.3 Java虚拟机41.4 HotSpot VM51.4.1 源码模块71.4.2 构建和调试71.4.3 回归测试121.5 Graal VM141.6 本章小结16第2章 类可用机制172.1 类的加载172.1.1 字节码172.1.2 类加载器192.1.3 文件解析212.2 类的链接232.2.1 字节码验证242.2.2 字节码重写242.2.3 方法链接262.3 类的初始化322.4 类的重定义352.5 本章小结36第3章 对象和类383.1 对象与类383.2 对象393.2.1 创建对象393.2.2 对象头413.2.3 对象哈希值433.3 类443.3.1 字段遍历453.3.2 虚表463.4 本章小结48第4章 运行时494.1 线程创生纪494.1.1 容器化支持514.1.2 Java线程524.1.3 虚拟机线程544.1.4 编译器线程574.1.5 服务线程584.1.6 计时器线程584.2 Java线程584.2.1 线程启动604.2.2 线程停止614.2.3 睡眠与中断634.3 栈帧664.4 JavaJVM沟通684.4.1 JNI694.4.2 JavaCalls724.5 Unsafe类744.5.1 堆外内存754.5.2 内存屏障754.5.3 阻塞和唤醒764.5.4 对象数据修改764.6 本章小结77第5章 模板解释器785.1 解释器体系785.1.1 C++解释器行为785.1.2 模板解释器行为795.2 机器代码片段815.3 CodeCache825.4 指令缓存刷新845.5 解释器生成865.5.1 普通方法入口865.5.2 方法加锁895.5.3 本地方法入口905.5.4 标准字节码915.5.5 非标准字节码1065.6 本章小结107第6章 并发设施1086.1 指令重排序1086.1.1 编译器重排序1096.1.2 处理器重排序1106.2 内存模型1126.2.1 happens-before内存模型1136.2.2 Java内存模型1146.3 基础设施1166.3.1 原子操作1166.3.2 ParkEvent1166.3.3 Parker1186.3.4 Monitor1206.4 锁优化1266.4.1 偏向锁1276.4.2 基本对象锁1286.4.3 重量级锁1286.4.4 RTM锁1316.5 本章小结132第7章 编译概述1337.1 编译器简介1337.1.1 运行时代码生成1347.1.2 JIT编译器1357.1.3 AOT编译器1367.1.4 JVMCI JIT编译器1367.2 即时编译技术1377.2.1 分层编译1377.2.2 栈上替换1387.2.3 退优化1397.3 编译理论基础1397.3.1 中间表示1397.3.2 基本块与控制流图1407.3.3 静态单赋值1427.3.4 规范化1427.3.5 值编号1437.3.6 自顶向下重写系统1447.3.7 循环不变代码外提概述1447.4 调试方法1457.4.1 编译日志1457.4.2 编译神谕1467.4.3 可视化工具1467.5 本章小结149第8章 C1编译器1508.1 编译流程1508.1.1 进入C11508.1.2 高级中间表示1528.1.3 低级中间表示1538.2 从字节码到HIR1558.2.1 识别基本块1558.2.2 抽象解释1568.3 HIR代码优化1588.3.1 规范化1588.3.2 内联1598.3.3 基本块优化1608.3.4 值编号1608.3.5 数组范围检查1628.3.6 循环不变代码外提1628.4 从HIR到LIR1648.4.1 return生成1658.4.2 new生成1658.4.3 goto生成1668.4.4 线性扫描寄存器分配1678.5 本章小结171第9章 C2编译器1729.1 编译流程1729.1.1 进入C21729.1.2 理想图1749.1.3 理想图流程概述1809.1.4 C2代码优化1839.1.5 代码生成流程1859.1.6 设置机器代码1869.2 构造理想图1879.2.1 构造示例1879.2.2 Identity、Ideal、GVN1919.3 机器无关优化1939.3.1 IGVN1939.3.2 逃逸分析1949.3.3 向量化1979.4 代码生成1999.4.1 指令选择1999.4.2 图着色寄存器分配2009.5 本章小结203第10章 垃圾回收20410.1 垃圾回收基础概述20410.1.1 GC Root20510.1.2 安全点20610.1.3 线程局部握手20810.1.4 GC屏障20910.2 Epsilon GC20910.2.1 源码结构20910.2.2 EpsilonHeap21010.2.3 对象分配21110.2.4 回收垃圾21210.3 Serial GC21210.3.1 弱分代假说
|
|