深入剖析Java虚拟机:源码剖析与实例详解(基础卷)

深入剖析Java虚拟机:源码剖析与实例详解(基础卷)

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

    关注微信公众号

因版权原因待上架

编辑推荐

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

内容简介

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

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

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

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

作者简介

作者马智,毕业于天津工业大学。在校期间所修专业为软件工程。毕业后一直从事软件开发相关工作。先后在掌游天下、京东集团任软件研发工程师。对编程语言的底层实现有浓厚的兴趣,尤其对编译原理有较为全面和深入的研究。深入研究过openJDK的源代码实现,其中包括Javac编译器的源代码实现。

章节目录

版权信息

内容简介

作者介绍

本书赞誉

配套源码获取方式

前言

第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 最终引用

深入剖析Java虚拟机:源码剖析与实例详解(基础卷)是2021年由机械工业出版社华章分社出版,作者马智。

得书感谢您对《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
选择的艺术:Photoshop图像处理深度剖析(第4版) 电子书
Photoshop重要的功能就是图像处理,图像处理的核主就是选择,这源于一个简单的道理“要改变某些像素,首先就要选中它”,因此称这本书为“选择的艺术”。 畅销书升级,4年沉淀,再次对Photoshop进行总结。 剖析Photoshop原理及本质,建立正确的“选择”观念。 理论结合实例讲解了路径、图层、通道、蒙版、滤镜、文字和绘画等操作技法。 详解色彩调整的方法与技巧,以及混合模式、HDR和Camera Raw等重点知识。 附赠资源 本书所有相关素材与PSD源文件
ANSYS疑难问题实例详解 电子书
本书系统梳理了ANSYS在结构分析应用中的一些疑难问题并给出解决办法或思路。问题涉及结构分析的前处理(几何建模、有限元模型)、求解分析(线性和非线性问题)、后处理,以及一些接触分析的实例和其他问题,均来自ANSYS实际使用人员的实践。本书可供ANSYS软件的初学者作为提高之用,也可供实际使用ANSYS软件的科技人员作为解决结构分析问题的参考。
Java程序设计基础 电子书
本书较为全面地介绍了Java程序开发的相关基础知识。全书共8章,主要讲解了Java语言概述、Java基础语法、数组、面向对象程序设计——类和对象、类的继承、类的多态性、异常处理和常用的Java类。在各章节的末尾设置了实践任务、本章小结和习题练习等环节,帮助读者巩固所学的内容。本书可以作为高职高专院校计算机相关专业Java程序开发基础课程的教材使用,也适合相关专业初学者和广大计算机爱好者自学使用。
工业赋能:深度剖析工业互联网时代的机遇和挑战 电子书
全面展示电子信息、工程机械、轻工家电、汽车制造、钢铁、石化、电力等行业是如何依托工业互联网打造新动能。
Java程序设计基础教程 电子书
本书是面向Java初学者的入门级图书,以通俗易懂的语言详细讲解Java语言的基础知识。