走进Java(1)
OpenJDK
自动内存管理机制(2-5)
虚拟机中内存是如何划分的,以及哪部分区域、什么样的代码和操作可能导致内存溢出异常,并讲解了各个区域出现内存溢出异常的常见原因。
分析了垃圾收集的算法和JDK1.7中提供的几款垃圾收集器的特性及运作原理。通过代码实例验证了Java虚拟机自动内存分配及回收的主要规则。
介绍了随JDK发布的6个命令行工具和两个可视化的故障处理的使用方法。
虚拟机执行子系统(6-9)
讲解了Class文件结构中的各个组成部分,以及每个部分的定义、数据结构和使用方法,以实战的方式演示了Class文件的数据是如何存储和访问的。
介绍了类加载过程的“加载”、“验证”、“准备”、“解析”和“初始化”5个阶段中虚拟机分别执行了哪些动作,还介绍了类加载器的工作原理及其对虚拟机的意义。
分析了虚拟机在执行代码时如何找到正确的方法,如何执行方法内的字节码,以及执行代码时涉及到的内存结构。
程序编译与代码优化(10-11)
分析了Java语言中泛型、主动装箱和拆箱、条件编译等多种语法糖的前因后果,并通过实战演示了如何使用插入式注解处理器来实现一个检查程序命名规范的编译器插件。
讲解了虚拟机的热点探测方法、HotSpot的即时编译器、编译触发条件,以及如何从虚拟机外部观察和分析JIT编译的数据和结果,此外,还讲解了几种常见的编译优化技术。
高效并发(12-13)
讲解了虚拟机Java内存模型的结构及操作,以及原子性、可见性和有序性在Java内存模型中的体现,介绍了先行发生原则的规则及使用,还了解了线程在Java语言中是如何实现的。
介绍了线程安全涉及的概念和分类、同步实现的方式及虚拟机的底层运作原理,并介绍了虚拟机实现高效并发所采取的一系列锁优化措施。
虚拟机拓展途径推荐
高级语言虚拟机圈子
圈主RednaxelaFX(莫枢)的博客
关于HotSpot虚拟机的最新讨论