天天看点

深入理解java虚拟机-概览

第2章 介绍了虚拟机中内存是如何划分的,哪部分区域、什么样的代码和操作可能导致内存溢出 异常,并讲解了各个区域出现内存溢出异常的常见原因。

Java运行期数据区域是虚拟机的基础结构,主要的变化是JDK 8时期的永久代的落幕和元空间的登场

第3章 垃圾收集的算法、垃圾收集器

并重点增加了JDK 11、12中新出现的ZGC和Shenandoah 两款低延迟全并发收集器的详细原理解析,这是垃圾收集器未来的发展方向

针对HotSpot中收集器实现的几个关 键技术点,如解决跨代引用的记忆集与卡表、解决并发标记的增量更新和原始快照算法,还有内存读、写屏障等技术都增加了专门的小节来进行介绍

第4章 基础命令行工具与可视化的故障处理工具

第三部分 虚拟机执行子系统

讲解虚拟机如何执行程序

第6章 讲解Class文件结构中的各个组成部分,以及每个部分的定义、数据结构和使用方法。(Class的数据是如何存储和访问)

为了实现JDK 9的Java模块化系统,属性表中新增了Module、ModulePackages、

M oduleM ain-Class三项新属性,常量池中加入了CONSTANT_M odule_info和CONSTANT_Package_info 两个常量。为了实现JDK 11新增的嵌套内(Java中的内部类)访问控制的API,属性表中又增加了 NestHost和NestMembers两项属性。为进一步加强动态语言支持,CONSTANT_Dynamic_info常量也在 JDK 11期间加入常量池

第7章 介绍了类加载过程的“加载”“验证”“准备”“解析”和“初始化”五个阶段中虚拟机分别进行了 哪些动作,还介绍了类加载器的工作原理及其对虚拟机的意义。

在JDK 9时引入了Java模 块化系统,这是近年来Java技术的一次重要升级

第8章 分析了虚拟机在执行代码时,如何找到正确的方法、如何执行方法内的字节码,以及执行 代码时涉及的内存结构。

第四部分 程序编译与代码优化

Java程序从源码编译成字节码,再从字节码编译成本地机器码的这两个过程,从整体来看其实等 同于一个传统编译器所执行的编译前端、后端过程

第10章 分析了Java语言中泛型、主动装箱拆箱、条件编译等多种语法糖的前因后果,并实战练 习了如何使用插入式注解处理器来完成一个检查程序命名规范的编译器插件。

Java泛型出现的历史背景和使用类型擦除来实现泛型所带来的一些限制

第11章 讲解了虚拟机的热点探测方法、HotSpot的即时编译器、编译触发条件,以及如何从虚拟机外部观察和分析即时编译的数据和结果,还选择了几种常见的编译期优化技术进行讲解。

第五部分 高效并发

第12章 讲解了虚拟机Java内存模型的结构及操作,以及原子性、可见性和有序性在Java内存模型 中的体现;介绍了先行发生原则的规则及使用,以及线程在Java语言之中是如何实现的;还提前介绍了目前仍然在实验室状态的Java协程的相关内容。

第13章 介绍了线程安全所涉及的概念和分类、同步实现的方式及虚拟机的底层运作原理,并且 介绍了虚拟机实现高效并发所做的一系列锁优化措施。

“自动内存管理”“Class文件结构与执行引擎”“编译器优 化”及“多线程并发”

继续阅读