展开全部

主编推荐语

Java大神全面深入剖Java虚拟机HotSpot源码实现,详解类的生命周期和垃圾收集器原理。

内容简介

本书以流行的工业级Java虚拟机HotSpot为基础,详细剖析其基础功能模块的源码,力求讲清楚每个重要技术的原理和实现细节,同时结合大量实例和图示帮助读者更好地理解所讲内容。

本书没有介绍Java运行时的栈结构,以及解释执行与编译执行等知识点,这些内容在本书的姊妹篇《深入剖析Java虚拟机:源码剖析与实例详解(运行时卷)》一书中有详细的介绍。

本书共13章,章节顺序基本上是按照类的生命周期进行编排的。本书涵盖的主要内容有HotSpot VM简介、对象的二分模型、类的加载机制、类与常量池的解析、字段的解析、方法的解析、类的连接与初始化、运行时数据区、类对象的创建和初始化、Serial垃圾收集器、Serial Old垃圾收集器以及Java引用类型的实现原理等。

本书主要面向想要深入学习和研究Java语言运行原理的人,尤其是正在从事或将来想要从事虚拟机开发的编程人员。另外,本书还非常适合Java求职人员阅读,可以帮助他们系统掌握虚拟机的相关知识,从而游刃有余地应对相关公司招聘时的考查。

目录

  • 版权信息
  • 内容简介
  • 作者介绍
  • 本书赞誉
  • 配套源码获取方式
  • 前言
  • 第1章 认识HotSpot VM
  • 1.1 初识JVM
  • 1.2 编译OpenJDK 8
  • 1.2.1 准备编译环境
  • 1.2.2 下载源代码
  • 1.2.3 编译源代码
  • 1.2.4 通过GDB调试源代码
  • 1.2.5 通过Eclipse调试源代码
  • 1.3 HotSpot VM源代码结构
  • 1.4 启动HotSpot VM
  • 第2章 二分模型
  • 2.1 Java类的表示——Klass
  • 2.1.1 Klass类
  • 2.1.2 InstanceKlass类
  • 2.1.3 InstanceKlass类的子类
  • 2.1.4 ArrayKlass类
  • 2.1.5 TypeArrayKlass类
  • 2.1.6 ObjArrayKlass类
  • 2.2 Java对象的表示——oop
  • 2.2.1 oopDesc类
  • 2.2.2 markOopDesc类
  • 2.2.3 instanceOopDesc类
  • 2.2.4 arrayOopDesc类
  • 2.2.5 arrayOopDesc类的子类
  • 2.3 操作句柄——Handle
  • 2.3.1 句柄Handle的定义与创建
  • 2.3.2 句柄Handle的释放
  • 第3章 类的加载
  • 3.1 类加载器
  • 3.1.1 引导类加载器/启动类加载器
  • 3.1.2 扩展类加载器
  • 3.1.3 应用类加载器/系统类加载器
  • 3.1.4 构造类加载器实例
  • 3.1.5 类的双亲委派机制
  • 3.2 预加载类
  • 3.2.1 核心类的预加载
  • 3.2.2 数组的预加载
  • 3.3 Java主类的装载
  • 3.4 触发类的装载
  • 第4章 类与常量池的解析
  • 4.1 类的解析
  • 4.1.1 Class文件格式
  • 4.1.2 ClassFileParser类简介
  • 4.1.3 ClassFileStream类简介
  • 4.1.4 解析类文件
  • 4.1.5 保存解析结果
  • 4.2 常量池的解析
  • 4.2.1 ConstantPool类
  • 4.2.2 创建ConstantPool实例
  • 4.2.3 解析常量池项
  • 第5章 字段的解析
  • 5.1 字段的解析基础
  • 5.1.1 FieldAllocationCount与FieldAllocationType类
  • 5.1.2 为字段分配内存空间
  • 5.1.3 获取字段信息
  • 5.2 伪共享
  • 5.3 字段的内存布局
  • 5.3.1 静态字段内存块的偏移量
  • 5.3.2 非静态字段内存块的偏移量
  • 5.3.3 计算每个字段的偏移量
  • 5.3.4 @Contended字段的偏移量
  • 5.4 字段的注入
  • 5.5 对象类型字段的遍历
  • 第6章 方法的解析
  • 6.1 Method与ConstMethod类
  • 6.1.1 Method类
  • 6.1.2 ConstMethod类
  • 6.2 调用parse_methods()函数解析方法
  • 6.2.1 创建Method与ConstMethod实例
  • 6.2.2 保存方法解析信息
  • 6.3 klassVtable虚函数表
  • 6.3.1 klassVtable类
  • 6.3.2 计算vtable的大小
  • 6.3.3 vtable的初始化
  • 6.4 klassItable虚函数表
  • 6.4.1 klassItable类
  • 6.4.2 计算itable的大小
  • 6.4.3 itable的初始化
  • 第7章 类的连接与初始化
  • 7.1 类的连接
  • 7.2 类的验证
  • 7.3 类的重写
  • 7.3.1 生成常量池缓存项索引
  • 7.3.2 重写字节码指令
  • 7.3.3 创建常量池缓存
  • 7.4 方法的连接
  • 7.5 类的初始化
  • 第8章 运行时数据区
  • 8.1 HotSpot VM的内存划分
  • 8.2 元空间
  • 8.2.1 元空间的数据结构
  • 8.2.2 内存块的管理
  • 8.2.3 内存分配
  • 8.2.4 内存回收
  • 8.3 堆空间
  • 8.3.1 CollectedHeap、Generation与Space类
  • 8.3.2 Java堆的回收策略
  • 8.3.3 Java堆的初始化
  • 第9章 类对象的创建
  • 9.1 对象的创建
  • 9.2 对象的内存分配
  • 9.2.1 在TLAB中分配内存
  • 9.2.2 在堆中分配内存
  • 9.2.3 添加对象偏移表记录
  • 第10章 垃圾回收
  • 10.1 分代垃圾回收
  • 10.1.1 Serial和Serial Old垃圾收集器
  • 10.1.2 复制算法和“标记-整理”算法
  • 10.1.3 卡表
  • 10.2 垃圾回收线程
  • 10.3 安全点
  • 10.3.1 关于安全点
  • 10.3.2 阻塞线程和状态切换线程进入安全点
  • 10.3.3 解释线程进入安全点
  • 10.3.4 编译线程进入安全点
  • 10.3.5 执行本地代码线程进入安全点
  • 第11章 Serial垃圾收集器
  • 11.1 触发YGC
  • 11.2 年轻代的垃圾回收
  • 11.3 标记普通的根对象
  • 11.4 标记老年代引用的对象
  • 11.5 递归标记活跃对象并复制
  • 第12章 Serial Old垃圾收集器
  • 12.1 触发FGC
  • 12.2 标记活跃对象
  • 12.3 计算活跃对象的地址
  • 12.4 更新对象的引用地址
  • 12.5 移动所有活跃对象
  • 12.6 更新偏移表与卡表
  • 第13章 Java引用类型
  • 13.1 Java引用类型简介
  • 13.2 查找引用类型
  • 13.3 软引用
  • 13.4 弱引用
  • 13.5 虚引用
  • 13.6 最终引用
展开全部

评分及书评

评分不足
1个评分

出版方

机械工业出版社有限公司

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