Skip to content

官方规范与参考书目

规范:Oracle 官方文档

学习任何技术,最权威的参考资料永远是官方规范。JVM 也不例外。

《Java 虚拟机规范》- The Java Virtual Machine Specification

这是 Oracle 官方发布的 JVM 规范文档,定义了 JVM 的所有技术细节:

  • Class 文件格式
  • 指令集数据类型
  • 运行时数据区
  • Frame 的结构与行为
  • 特殊方法(<clinit>、<init>)
  • 异常与错误处理

文档地址https://docs.oracle.com/javase/specs/jvms/se17/jvms17.pdf

当前最新版本是 Java 17,如果你的项目还在用 JDK 8,可以对照 Java 8 规范文档阅读。规范本身比较枯燥,建议先学完本教程,对 JVM 有整体认知后,再回来看规范,这时候才能看懂那些条条框框在说什么。

规范不是给初学者看的书,但它是给想深入理解的人查漏补缺的字典。

HotSpot VM 官方文档

Oracle HotSpot VM 是最常用的 JVM 实现,它的官方文档涵盖了很多实践层面的内容:

地址https://docs.oracle.com/javase/8/docs/technotes/guides/hotspot/

包括:

  • JVM 命令行参数说明
  • GC 调优指南
  • 性能调优建议

经典参考书籍

入门推荐:《深入理解 Java 虚拟机》—— 周志华

这是中文世界里 JVM 领域最经典的书籍,没有之一。

优点:

  • 体系完整,从 JVM 整体结构到 GC 算法,涵盖面广
  • 深度适中,既讲原理又有实战
  • 结合了大量实际案例,不是干巴巴的理论

缺点:

  • 基于 JDK 7/8 写作,部分内容需要对照新版 JDK
  • 个别章节偏理论,需要结合实践理解

适合人群:有一定 Java 基础的开发者,第一次系统学习 JVM

进阶推荐:《The Garbage Collection Handbook》—— Richard Jones 等

GC 领域的权威著作,被称为「GC 红宝书」。

这本书从理论高度系统讲解了垃圾回收的各种算法和数据结构,是理解 GC 底层原理的最佳资料。英文原版稍显学术,但内容绝对顶级。

适合人群:想深入理解 GC 原理,或需要做 JVM 调优的高级开发者

经典必读:《Effective Java》—— Joshua Bloch

不是专门讲 JVM,但每一条 Item 背后都有 JVM 相关的知识点。

这本书里很多讨论都与 JVM 的运作机制有关,比如:

  • Item 6:避免使用终结函数——涉及 JVM 对象生命周期
  • Item 50: defensive copying——涉及 JVM 内存模型
  • Item 80~81:同步和线程——涉及 JVM 内存模型(JMM)

读完 JVM 基础后回头看这本书,会有更深的理解。

工具书:《Java Performance》—— Charlie Hunt 等

Oracle 官方推荐的 JVM 性能调优书籍。

内容涵盖:

  • JVM 监控工具(jstat、jmap、jstack 等)
  • GC 日志分析
  • 性能测试方法
  • 内存和 GC 调优实战

适合人群:需要做生产环境调优的开发者

深度进阶:《Inside the Java Virtual Machine》—— Bill Venners

以一问一答的形式讲解 JVM,非常适合作为补充读物。

这本书的特点是语言生动,不枯燥。作者通过大量的问答场景,把 JVM 的概念讲得深入浅出。

英文原版可以在网上找到免费资源。

在线资源

官方文档

资源地址
Java SE 规范https://docs.oracle.com/javase/specs/
HotSpot文档https://docs.oracle.com/javase/technologies/components/hotspot.html
JDK 工具文档https://docs.oracle.com/javase/8/docs/technotes/tools/
GC 调优指南https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/

社区博客

  • R 大(RednaxelaFX) 的博客:国内 JVM 领域最有深度的技术博客之一,知乎上也有大量高质量回答
  • Netflix 技术博客:GC 实战经验分享
  • JVM 博客合集:awesome-jvm 系列

学习工具

  • GCLogViewer / GCViewer:GC 日志可视化分析
  • JITWatch:JIT 编译过程可视化
  • JProfiler / YourKit:商业级 Profiler
  • Arthas:阿里开源的 JVM 诊断工具,本教程会有专门章节讲解

版本选择建议

在学习阶段,建议使用 JDK 11 或 JDK 17

版本特点建议
JDK 8经典 LTS,存量项目多了解历史,对比学习
JDK 11LTS,有 ZGC、G1 成熟兼顾稳定性和新特性
JDK 17最新 LTS,密封类、record 等新语法主力学习环境
JDK 21虚拟线程(Loom)关注前沿技术

不要用 JDK 6/7 学习,很多核心概念在老版本里已经被推翻或重新设计。

本节小结

JVM 的学习资源非常丰富,关键是选对资料、按需深入:

  • 想系统学习 → 《深入理解 Java 虚拟机》
  • 想深入 GC 原理 → 《The Garbage Collection Handbook》
  • 想查漏补缺 → Oracle 官方规范
  • 想实战调优 → 《Java Performance》 + 官方 GC 调优指南

下一节,我们来聊聊 跨平台的 Java 与跨语言的 JVM,理解 Java 为什么能「一次编写,到处运行」。

基于 VitePress 构建