Java能获得如此广泛的认可,除了它拥有一门结构严谨、面向对象的编程语言之外,还有许多不可忽视的优点:它摆脱了硬件平台的束缚,实现了“一次编写,到处运行”的理想;还有无数来自商业机构和开源社区的第三方类库来帮助用户实现各种各样的功能……Java带来的这些好处,让软件的开发效率得到了极大的提升。

目前,商用的高性能Java虚拟机都提供了相当多的优化参数和调节手段,用于满足应用程序在实际生产环境中对性能和稳定性的要求。就是因为这样,在Java开发体系中,对架构师、系统调优师、高级程序员等角色的需求一直都非常大。学习虚拟机中各种自动运作特性的原理也成为Java程序员成长路上最终必然会接触到的一课,所以小编也就给大家打来这份“JVM学习笔记”相信大家通过学习这本书,大家可以以一个相对轻松的方式学到虚拟机的运作原理~

由于篇幅限制,就只能以截图主要内容的方式为大家展示出来了,需要的朋友帮忙转发+评论,关注我之后直接扫描小编的二维码即可百分百获取!

第一部分

  • 走近Java

这篇主要介绍了Java技术体系过去、现在的情况以及未来的发展趋势,并在实践中介绍了如何自己编译一个OpenJDK 12

  • 自己编译JDK

第二部分自动内存管理

  • Java内存区域与内存溢出异常

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

  • 对象的访问定位

  • 垃圾收集器与内存分配策略

这篇介绍了垃圾收集的算法和HotSpot虚拟机中提供的几款垃圾收集器的特点及运作原理。通过代码实例验证了Java虚拟机中自动内存分配及回收的主要规则

  • 垃圾收集算法—标记-整理算法

  • Scrial收集器

  • 选择合适的垃圾收集器

  • 虚拟机性能监控、故障处理工具

这篇介绍了随JDK发布的基础命令行工具与可视化的故障处理工具的使用方法

  • 基础故障处理工具

  • 调优案例分析与实战

这篇分享了几个比较有代表性的实际案例,还准备了一个所有开发人员都能“亲身实战"”的练习,希望读者能通过实践来获得故障处理和调优的经验

  • 案例分析—集群间同步导致的内存输出

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

  • 类文件结构

本篇讲解了Class文件结构中的各个组成部分,以及每个部分的定义、数据结构和使用方法,以实战的方式演示了Class的数据是如何存储和访问的

  • 常量池

  • 同步指令

  • 虚拟机类加载机制

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

  • 模块化下的类加载器

  • 虚拟机字节码执行引号

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

  • 虚拟机动态分派的实现

  • 类加载及执行子系统的案例与实战

本篇通过几个类加载及执行子系统的案例,介绍了使用类加载器和处理字节码的一些值得欣赏和借鉴的思路,并通过一个实战练习加深读者对前面理论知识的理解

  • 验证

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

  • 前端编译与优化

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

  • 泛型

  • 后端编译与优化

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

  • 后端编译与优化

第五部分高效并发

  • Java内存模型与线程

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

  • 主内存与工作内存

  • 程序安全与锁优化

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

  • 偏向锁

总结

由于篇幅限制原因,就只能以截图主要内容的方式为大家展示出来了,需要的朋友帮忙转发+评论,关注我之后扫描小编的二维码即可百分百获取!