深入解析Java虚拟机HotSpot

深入解析Java虚拟机HotSpot

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

阿里云专家撰写,剖析HotSpot源码,解析运行时、即时编译器、垃圾回收器工作机制,指导JVM开发、调优和排错。

内容简介

很多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、模板解释器等的底层实现。

作者简介

作者杨易,Java开发工程师,就职于阿里云基础设施部。热衷于研究编程语言的设计与实现,对Java语言的设计与实现有非常深入的研究,尤其是Java的虚拟机HotSpot VM,在JVM的开发、调优和排错方面积累了丰富的经验。此外,在编译器领域也有较深厚的积累。

章节目录

版权信息

前言

第1章 Java大观园

1.1 OpenJDK

1.2 JEP

1.3 Java虚拟机

1.4 HotSpot VM

1.4.1 源码模块

1.4.2 构建和调试

1.4.3 回归测试

1.5 Graal VM

1.6 本章小结

第2章 类可用机制

2.1 类的加载

2.1.1 字节码

2.1.2 类加载器

2.1.3 文件解析

2.2 类的链接

2.2.1 字节码验证

2.2.2 字节码重写

2.2.3 方法链接

2.3 类的初始化

2.4 类的重定义

2.5 本章小结

第3章 对象和类

3.1 对象与类

3.2 对象

3.2.1 创建对象

3.2.2 对象头

3.2.3 对象哈希值

3.3 类

3.3.1 字段遍历

3.3.2 虚表

3.4 本章小结

第4章 运行时

4.1 线程创生纪

4.1.1 容器化支持

4.1.2 Java线程

4.1.3 虚拟机线程

4.1.4 编译器线程

4.1.5 服务线程

4.1.6 计时器线程

4.2 Java线程

4.2.1 线程启动

4.2.2 线程停止

4.2.3 睡眠与中断

4.3 栈帧

4.4 Java/JVM沟通

4.4.1 JNI

4.4.2 JavaCalls

4.5 Unsafe类

4.5.1 堆外内存

4.5.2 内存屏障

4.5.3 阻塞和唤醒

4.5.4 对象数据修改

4.6 本章小结

第5章 模板解释器

5.1 解释器体系

5.1.1 C++解释器行为

5.1.2 模板解释器行为

5.2 机器代码片段

5.3 CodeCache

5.4 指令缓存刷新

5.5 解释器生成

5.5.1 普通方法入口

5.5.2 方法加锁

5.5.3 本地方法入口

5.5.4 标准字节码

5.5.5 非标准字节码

5.6 本章小结

第6章 并发设施

6.1 指令重排序

6.1.1 编译器重排序

6.1.2 处理器重排序

6.2 内存模型

6.2.1 happens-before内存模型

6.2.2 Java内存模型

6.3 基础设施

6.3.1 原子操作

6.3.2 ParkEvent

6.3.3 Parker

6.3.4 Monitor

6.4 锁优化

6.4.1 偏向锁

6.4.2 基本对象锁

6.4.3 重量级锁

6.4.4 RTM锁

6.5 本章小结

第7章 编译概述

7.1 编译器简介

7.1.1 运行时代码生成

7.1.2 JIT编译器

7.1.3 AOT编译器

7.1.4 JVMCI JIT编译器

7.2 即时编译技术

7.2.1 分层编译

7.2.2 栈上替换

7.2.3 退优化

7.3 编译理论基础

7.3.1 中间表示

7.3.2 基本块与控制流图

7.3.3 静态单赋值

7.3.4 规范化

7.3.5 值编号

7.3.6 自顶向下重写系统

7.3.7 循环不变代码外提概述

7.4 调试方法

7.4.1 编译日志

7.4.2 编译神谕

7.4.3 可视化工具

7.5 本章小结

第8章 C1编译器

8.1 编译流程

8.1.1 进入C1

8.1.2 高级中间表示

8.1.3 低级中间表示

8.2 从字节码到HIR

8.2.1 识别基本块

8.2.2 抽象解释

8.3 HIR代码优化

8.3.1 规范化

8.3.2 内联

8.3.3 基本块优化

8.3.4 值编号

8.3.5 数组范围检查

8.3.6 循环不变代码外提

8.4 从HIR到LIR

8.4.1 return生成

8.4.2 new生成

8.4.3 goto生成

8.4.4 线性扫描寄存器分配

8.5 本章小结

第9章 C2编译器

9.1 编译流程

9.1.1 进入C2

9.1.2 理想图

9.1.3 理想图流程概述

9.1.4 C2代码优化

9.1.5 代码生成流程

9.1.6 设置机器代码

9.2 构造理想图

9.2.1 构造示例

9.2.2 Identity、Ideal、GVN

9.3 机器无关优化

9.3.1 IGVN

9.3.2 逃逸分析

9.3.3 向量化

9.4 代码生成

9.4.1 指令选择

9.4.2 图着色寄存器分配

9.5 本章小结

第10章 垃圾回收

10.1 垃圾回收基础概述

10.1.1 GC Root

10.1.2 安全点

10.1.3 线程局部握手

10.1.4 GC屏障

10.2 Epsilon GC

10.2.1 源码结构

10.2.2 EpsilonHeap

10.2.3 对象分配

10.2.4 回收垃圾

10.3 Serial GC

10.3.1 弱分代假说

10.3.2 卡表

10.3.3 Young GC

10.3.4 Full GC

10.3.5 世界停顿

10.4 Parallel GC

10.4.1 多线程垃圾回收

10.4.2 GC任务管理器

10.4.3 并行与并发

10.5 CMS GC

10.5.1 回收策略

10.5.2 对象丢失问题

10.5.3 Old GC周期

10.5.4 并发模式失败

10.5.5 堆碎片化

10.6 G1 GC

10.6.1 简介

10.6.2 混合回收

10.7 Shenandoah GC

10.8 ZGC

10.9 本章小结

第11章 G1 GC

11.1 G1 GC简介

11.1.1 基于Region的堆

11.1.2 记忆集RSet

11.1.3 停顿预测模型

11.2 Young GC

11.2.1 选择CSet

11.2.2 清理根集

11.2.3 处理RSet

11.2.4 对象复制

11.3 Mixed GC

11.3.1 SATB

11.3.2 全局并发标记

11.3.3 对象复制

11.4 Full GC

11.5 字符串去重

11.6 本章小结

深入解析Java虚拟机HotSpot是2020年由机械工业出版社出版,作者杨易。

得书感谢您对《深入解析Java虚拟机HotSpot》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
深入浅出Spring Boot 2.x 电子书
本书章节编排合理,深入浅出地阐述了Spring Boot 2.x的原理与应用,以及当今较为流行的微服务系统经常用到的技术及原理,内容通俗易懂。
CSS世界 电子书
书中介绍大量许多前端开发人员都不知道的CSS知识点。通过阅读本书,读者会对CSS世界的深度和广度有一个全新的认识。
深入浅出Vue.js 电子书
Vue.js核心技术解析:变化侦测、虚拟DOM、模板编译及架构原理。
Java基础案例教程 电子书
传智播客经典图书的延续。本书采用章节 案例的编写方式,除第1章外,其他章节均加入案例讲解,总计20个案例,达到“边做边学”的效果,提供免费教学资源,包括11 个精美教学PPT、1300 道测试题、长达37 小时的教学视频等。
计算机网络技术(第4版) 电子书
12章详解计算机网络、技术、安全与应用