JVM 深入理解 专栏导览

专栏定位

本专栏聚焦 Java 虚拟机(JVM) 的底层实现原理——从 .java 源码到最终在 CPU 上执行的机器码,中间经历了编译、类加载、字节码解释、即时编译等多个阶段,每个阶段都隐藏着精妙的设计。理解 JVM 不是为了”面试八股”,而是为了在性能调优、内存泄漏排查、GC 停顿分析等实际工程问题面前,能够从原理层面定位根因并给出解决方案。

本专栏以 HotSpot VM(OpenJDK 实现)为主要分析对象,覆盖 JDK 8 到 JDK 21 的关键演进,深入剖析运行时数据区、对象模型、垃圾回收器家族、类加载机制、字节码执行引擎和 JIT 编译优化。

目标读者

  • 希望从”会用 Java”进阶到”理解 Java 为什么这样运行”的中高级工程师
  • 需要进行 JVM 调优、GC 分析的后端/中间件开发者
  • 准备深入学习 JVM 源码或参与虚拟机相关项目的技术爱好者

专栏目录

📌 全局概览(根目录)

序号标题核心内容
0101 JVM 全局架构——从 .java 到机器码的完整旅程javac 编译、Class 文件结构、类加载子系统、运行时数据区、执行引擎、GC 子系统的全景图

📂 运行时数据区/

序号标题核心内容
0202 运行时数据区——堆、栈、方法区的内存布局程序计数器、虚拟机栈(栈帧结构)、本地方法栈、堆(新生代/老年代)、方法区/元空间的演进、直接内存与 NIO
0303 对象的创建、内存布局与访问定位对象创建的五步流程、TLAB 分配、对象头(Mark Word + Klass Pointer)、实例数据与对齐填充、句柄 vs 直接指针、压缩指针(CompressedOops)

📂 对象生命周期与GC/

序号标题核心内容
0404 垃圾回收基础——可达性分析、安全点与安全区域引用计数 vs 可达性分析、GC Roots 的枚举、四种引用类型(强/软/弱/虚)、OopMap 与安全点、安全区域的设计
0505 垃圾回收算法——标记清除、复制、标记整理与分代假说三种基础算法的原理与优缺点、分代收集假说、Minor GC / Major GC / Full GC 的触发条件、跨代引用与记忆集
0606 经典垃圾回收器——Serial、Parallel、CMS 深度剖析Serial/Serial Old 的单线程模型、Parallel Scavenge/Old 的吞吐量优先策略、CMS 的四阶段并发标记与碎片问题
0707 G1 收集器——Region 化内存与混合回收Region 划分(Eden/Survivor/Old/Humongous)、SATB 快照与并发标记、Mixed GC 的回收集选择、停顿预测模型、Full GC 的退化场景
0808 ZGC——亚毫秒停顿的着色指针与读屏障着色指针(Colored Pointer)的四种视图、读屏障(Load Barrier)、并发转移与重映射、分代 ZGC(JDK 21)、与 G1 的对比选型
0909 Shenandoah——与 ZGC 殊途同归的并发压缩Brooks Pointer 转发指针、并发疏散(Concurrent Evacuation)、与 ZGC 的技术路线对比、适用场景分析

📂 类加载器/

序号标题核心内容
1010 类加载机制——双亲委派模型与打破它的场景加载→验证→准备→解析→初始化五阶段、双亲委派模型的源码实现、SPI/JNDI/OSGi/Tomcat 打破双亲委派的原因与方式、模块系统(JDK 9+)

📂 执行引擎/

序号标题核心内容
1111 字节码指令集与执行引擎Class 文件的魔数/版本/常量池/方法表结构、字节码指令分类(加载存储/运算/类型转换/控制转移/方法调用)、解释器 vs 编译器、方法调用的五条指令(invokevirtual/invokeinterface/invokespecial/invokestatic/invokedynamic)
1212 JIT 编译与逃逸分析——从解释执行到本地代码分层编译(C1/C2)、热点探测(方法计数器/回边计数器)、逃逸分析(栈上分配/标量替换/锁消除)、内联缓存、OSR 编译

📂 JVM相关工具与性能调优/

序号标题核心内容
1313 JVM 内存问题实战——OOM、内存泄漏与堆外内存各区域 OOM 的触发条件与排查、常见内存泄漏模式(ThreadLocal/静态集合/未关闭资源)、堆外内存(DirectByteBuffer/Unsafe)的监控与泄漏排查
1414 GC 调优实战——日志分析、参数调优与选型指南GC 日志格式解读(-Xlog:gc*)、关键指标(停顿时间/吞吐量/堆利用率)、各收集器的核心参数、JDK 8/11/17/21 的 GC 默认值演进、生产环境选型决策树

推荐阅读路径

入门路径:01 → 02 → 03 → 05 → 06 → 10

GC 深入路径:04 → 05 → 06 → 07 → 08 → 09 → 14

性能调优路径:12 → 13 → 14 → 02 → 07/08

前置知识

  • Java 基础语法和常用 API
  • 操作系统基础(进程/线程/虚拟内存)
  • 建议先阅读 Java 并发编程 专栏了解 Java 线程模型

关联专栏