Java GC 基础知识快速回顾

【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):存放长期存活对象

对象晋升规则

  1. Minor GC 后仍存活 → 进入 Survivor
  2. Survivor 存活 15 次(-XX:MaxTenuringThreshold=15)→ 进入老年代
  3. 大对象(> -XX:PretenureSizeThreshold)直接进老年代

3. GC 类型速查表(2026 生产推荐)

GC 类型触发时机暂停时间吞吐量推荐场景开启参数
Minor GCEden 区满极短(ms级)日常对象分配自动
Major/Full GC老年代满 / System.gc()较长要尽量避免!
G1 GC混合回收<200ms大多数 Web 项目默认-XX:+UseG1GC
ZGC并发<1ms中高低延迟、金融、实时系统-XX:+UseZGC(JDK21+ Generational ZGC)
Shenandoah并发<10msOpenJDK 大堆-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,咱们持续硬核,下期见!☕

文章已创建 5074

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部