【Linux我做主 · Java GC专栏】Java GC 基础知识快速回顾(2026超精炼版)—— 10分钟吃透核心,生产必备!
大家好,我是重阳。上期我们深度扒了 C++ 模板编程,今天回归 Java 老本行——垃圾回收(GC)基础快速回顾。
这篇是给 0-3年开发者 的极简高浓度版,只讲最重要、最常考、最影响生产的知识点,配最新 JDK 21/25 状态,一图一表看完就能立刻用在 Spring Boot 项目里!
1. JVM 内存区域 & GC 作用范围(先看这张图)
GC 只回收堆和方法区(元空间):
| 区域 | 是否被 GC | 回收时机 | 说明 |
|---|---|---|---|
| 堆 (Heap) | 是 | Minor / Full GC | 对象主要存放区 |
| 方法区 (Metaspace) | 是 | Full GC | 类元数据、常量池 |
| 虚拟机栈 | 否 | 方法结束自动回收 | 栈帧 |
| 本地方法栈 | 否 | – | JNI |
| 程序计数器 | 否 | – | 线程私有 |
2. 堆内存分代结构(2026 标准图)
经典分代(大多数生产仍在使用):
- 年轻代 (Young):Eden + Survivor S0/S1(8:1:1 默认比例)
- 老年代 (Old):存放长期存活对象
对象晋升规则:
- Minor GC 后仍存活 → 进入 Survivor
- Survivor 存活 15 次(-XX:MaxTenuringThreshold=15)→ 进入老年代
- 大对象(> -XX:PretenureSizeThreshold)直接进老年代
3. GC 类型速查表(2026 生产推荐)
| GC 类型 | 触发时机 | 暂停时间 | 吞吐量 | 推荐场景 | 开启参数 |
|---|---|---|---|---|---|
| Minor GC | Eden 区满 | 极短(ms级) | 高 | 日常对象分配 | 自动 |
| Major/Full GC | 老年代满 / System.gc() | 较长 | 低 | 要尽量避免! | – |
| G1 GC | 混合回收 | <200ms | 高 | 大多数 Web 项目默认 | -XX:+UseG1GC |
| ZGC | 并发 | <1ms | 中高 | 低延迟、金融、实时系统 | -XX:+UseZGC(JDK21+ Generational ZGC) |
| Shenandoah | 并发 | <10ms | 中 | OpenJDK 大堆 | -XX:+UseShenandoahGC |
2026 真实选择公式:
- 堆 < 32GB + 追求吞吐 → G1(默认)
- 延迟敏感(P99 < 50ms)→ Generational ZGC
- OpenJDK + 大堆 → Shenandoah
4. 常见 GC 算法一图看懂
- 标记-清除:CMS(已废弃)
- 复制算法:年轻代(快!但浪费空间)
- 标记-整理:老年代(不产生碎片)
- 分代收集:年轻代频繁 Minor,老年代少量 Full
5. 生产最常用 GC 参数(直接复制粘贴)
# G1(推荐大多数项目)
java -XX:+UseG1GC \
-Xmx8g -Xms8g \
-XX:MaxGCPauseMillis=100 \
-XX:G1HeapRegionSize=16m \
-Xlog:gc*:file=/var/log/gc.log:time,level,tags
# ZGC(低延迟王者)
java -XX:+UseZGC -Xmx16g -Xms16g -Xlog:gc*
6. 快速排查 GC 问题命令(Linux 我做主)
# 1. 查看当前 GC 类型
jcmd <pid> GC.heap_info
# 2. 实时监控 GC
jstat -gcutil <pid> 1000
# 3. 详细日志(生产必开)
-Xlog:gc*:file=/var/log/gc.log:time,level,tags
# 4. 强制 Full GC(测试用)
jcmd <pid> GC.run
7. 一句话总结
Java GC 本质:通过分代 + 不同算法,在“低延迟”和“高吞吐”之间做取舍。
2026 年,G1 是保底,ZGC 是王牌,懂了分代、Minor/Full、G1 参数,你就再也不怕“Full GC 频繁卡死”。
今天就行动(服务器上直接敲):
jps | grep java
jstat -gcutil <pid> 1000
想看 下一期?
评论区打 1(G1 混合回收深度解析)、2(Generational ZGC 实战调优)、3(Arthas GC 诊断全流程)、4(Spring Boot 生产 GC 参数模板),我立刻出!🚀
推荐资源(2026 最新):
- Oracle GC Tuning Guide
- 《深入理解 Java 虚拟机》第三版
- foojay.io “Java GC 2026 指南”
Java GC 我做主,从今天起,你的 Full GC 再也不卡顿!💥
Linux + Java,咱们持续硬核,下期见!☕