展开全部

主编推荐语

阿里云专家撰写,剖析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、模板解释器等的底层实现。

目录

  • 版权信息
  • 前言
  • 第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 本章小结
展开全部

评分及书评

评分不足
1个评分

出版方

机械工业出版社有限公司

机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。