深入理解 Java 虚拟机 -HotSpot
横看成岭侧成峰,远近高低各不同。不同的人从不同的角度看到的 HotSpot VM 也不尽相同。从 Java 应用开发者的角度出发,虚拟机如图下所示。
Java 应用开发者关注 Java 语言,关注应用的实现和库的实现,用合法的 Java 代码表达思想,通过编译器工具编译产出字节码交给虚拟机运行。在他们眼中虚拟机是一个黑盒,所以更期望虚拟机的行为能遵循 Java 相关规范,这样才能放心地用语言集实现应用程序或库,进而供用户使用。
虚拟机开发者关注虚拟机内部,在他们眼中,虚拟机不再是黑盒,而是各个组件根据规则交互的一套“Java 操作系统”。当上层应用出现问题时,他们可以从虚拟机层找出问题致因,当上层语言需要新特性、新功能,或者下层操作系统提供新特性时,他们可以在虚拟机层实现,然后以某种方式暴露给上层。从虚拟机开发者的角度出发,虚拟机如下图所示。
很多 JVM 的底层技术细节你是否只了解表面?
面对 JVM Crash 或性能调优方面的问题时你是否会束手无策?
面对上层 Java 应用发生的偏离预期的行为是否会不知所措?
……
今天为你推荐一本新书《深入解析 Java 虚拟机 HotSpot》,这本书以源码分析为基础,从运行时、垃圾回收器、即时编译器 3 个维度全面、深入解析 HotSpot VM 的底层实现和工作机制,同时与上层的 Java 语言和库结合,指导读者解决 JVM 开发、JVM 调优和 JVM 排错方面遇到的各种问题。作者是阿里云 Java 技术专家,热衷于研究编程语言的设计与实现,对 Java 虚拟机和编译器都有很深入的研究。
广度与深度兼顾:广度上涵盖 Graal VM、CDS、Instrumentation、编译重放、非标准字节码、RTM 锁、JIT 调试工具、EpsilonGC/ShenandoahGC/ZGC、G1 字符串去重等重要知识点;深度上深入解析了 C1、C2、G1GC、ObjectMonitor、Mutex、模板解释器等的底层实现。
全书共 11 章,参考 OpenJDK 社区的划分方式来组织内容,分为运行时、即时编译器、垃圾回收器三个部分。
第一部分 运行时
首先,从 Java 生态系统的角度,简单介绍了 JDK、JVM、JEP、HotSpot VM、Graal VM,引导读者快速进入 Java 虚拟机的世界;然后从源码的角度深入解析了 HotSpot VM 的类可用机制、对象和类、运行时、模板解释器和并发设施。
第二部分 即时编译器
首先重点介绍了即时编译器技术、编译理论、编译器调试方法等编译器的基础知识;然后详细讲解了 C1 和 C2 两个即时编译器的实现原理、工作机制和优化方法。
第三部分 垃圾回收器
首先全面介绍了 Epsilon GC、Serial GC、Parallel GC、CMS GC、G1 GC、Shenandoah GC、ZGC 等各种垃圾回收器,然后重点剖析了 G1 GC。
大多数程序员都有中年危机,而深入研究技术,将技术做深、做精、做专是技术人员避免中年危机的明智之举。对于 Java 程序员来说,这本书能带你走向 Java 底层,深入了解 HotSpot 虚拟机的运行原理与实现机制,是走向 Java 技术巅峰的不二选择。
评论