Skip to content

JVM 内存与垃圾回收篇概述

这套文档讲什么

这是一份关于 JVM(Java Virtual Machine) 的系统性教程,从最基础的概念出发,一路延伸到生产级别的性能调优。

JVM 是 Java 技术栈的核心底层。不管你用的是 Spring Boot 还是 MyBatis,不管你写的是 CRUD 还是分布式架构,最终代码都要跑在 JVM 上。理解它,才能真正掌握 Java。

本篇聚焦于两个核心主题:内存结构垃圾回收(GC)。这两个话题几乎占据了 JVM 面试 80% 的内容,也是线上调优的主战场。

内容全景图

先给你一个整体印象,这套文档是怎么组织的:

JVM 基础认知
├── 认识 JVM:是什么、在哪、怎么跑
├── 跨平台与字节码:Java 为何能「一次编写,到处运行」
└── 主流虚拟机:不止 HotSpot

运行时数据区(内存结构)
├── 类加载器:类是怎么被加载进来的
├── 线程私有区:PC 寄存器、虚拟机栈、本地方法栈
├── 线程共享区:堆、方法区
└── 对象实例化:一个 new 到底经历了什么

执行引擎与核心专题
├── 执行引擎:解释执行 vs JIT 编译
└── String 专题:那些你一直搞混的字符串问题

垃圾回收(GC)核心
├── GC 基础理论:算法、原理、核心概念
├── 垃圾回收器:Serial、G1、ZGC...
└── GC 日志分析:如何读懂 GC 日志

字节码与类加载深度剖析
├── Class 文件结构:字节码里到底有什么
├── 字节码指令集:JVM 是怎么执行代码的
└── 类加载深度剖析:双亲委派、命名空间...

性能监控与调优
├── 监控工具:jps、jstat、Arthas...
└── JVM 参数与调优实战

你会学到什么

学完这套文档,你将能够:

  1. 说清楚 JVM 的整体架构:从 .java 文件到 bytecode,再到 ClassLoader、执行引擎、运行时数据区,每个模块各司其职
  2. 掌握内存区域的核心原理:堆和非堆怎么划分、对象在内存中怎么流转、逃逸分析是什么
  3. 理解 GC 的底层逻辑:哪些算法各有优劣、主流回收器怎么配合工作、G1 的 Region 是什么
  4. 具备生产调优能力:能读 GC 日志、会用 Arthas 排查问题、能根据业务场景配置 JVM 参数

适用人群

  • 想深入理解 Java 的开发者:不只是会用框架,想知道底层怎么运作
  • 准备面试的工程师:JVM 是 Java 后端面试的必考内容
  • 排查线上问题的运维/开发:服务器 OOM、GC 频繁、接口超时,需要从 JVM 层面分析
  • 想提升技术深度的任何人:技术这条路,越往底层走,越扎实

学习路径建议

如果你是初学者,建议按文档顺序阅读。但如果时间紧张,可以优先看这几篇:

前置知识

阅读本模块,你需要:

  • 熟悉 Java 基础语法:能写简单的 Java 程序
  • 了解操作系统基本概念:进程、内存、CPU 等基础术语
  • 会使用命令行:能够用 javacjava 命令编译运行程序

如果这些还不熟悉,先去 Java 基础模块 补一补,再回来学 JVM 会更顺畅。

关于版本

本教程以 JDK 17 LTS 为主,部分内容会对比 JDK 8 和 JDK 11 的差异。JVM 在演进,但核心原理变化不大,理解底层逻辑比死记某个版本特性更重要。

准备好了?让我们从 Java 上层技术与 JVM 的关系 开始,正式进入 JVM 的世界。

基于 VitePress 构建