面试鸭返利网
首页跳转
2025年Java面试宝典网盘地址:
链接: https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g
提取码: 9b3g
JVM垃圾回收机制有几种
作为Java程序员,JVM垃圾回收机制是面试必考题。今天我们从真实面试场景出发,用口语化的方式梳理这个问题。如果你需要系统化学习,可以收藏文末的面试宝典,通过面试鸭返利网购买会员还能返利25元。
一、JVM垃圾回收的核心逻辑
JVM垃圾回收机制的核心是自动管理内存,开发者无需手动释放对象。它的工作流程可以概括为:
- 标记阶段:识别哪些对象是“垃圾”(不再被引用的对象)
- 回收阶段:释放被标记对象占用的内存空间

二、主流的垃圾回收算法
1. 标记-清除算法(Mark-Sweep)
- 实现原理:先标记所有需要回收的对象,再统一清除
- 优点:实现简单
- 缺点:内存碎片问题严重
- 适用场景:老年代回收(如CMS回收器)
2. 复制算法(Copying)
- 实现原理:将内存分为两块,每次只使用一块,存活对象复制到另一块
- 优点:无内存碎片
- 缺点:内存利用率仅50%
- 适用场景:新生代回收(Serial、ParNew等回收器)
3. 标记-整理算法(Mark-Compact)
- 实现原理:标记后让存活对象向内存一端移动,清理边界外的内存
- 优点:避免内存碎片
- 缺点:移动对象成本高
- 适用场景:老年代回收(Parallel Old回收器)
三、七大垃圾回收器类型

1. Serial收集器
- 特征:单线程工作,全程STW(Stop-The-World)
- 应用场景:客户端模式、内存<100MB的系统
2. ParNew收集器
- 特征:Serial的多线程版本
- 搭配:必须与CMS配合使用
3. Parallel Scavenge收集器
4. Serial Old收集器
5. Parallel Old收集器
- 特点:支持多线程的标记-整理算法
- 最佳拍档:Parallel Scavenge
6. CMS收集器
- 核心目标:最短回收停顿时间
- 四阶段流程:
- 初始标记(STW)
- 并发标记
- 重新标记(STW)
- 并发清除
7. G1收集器
- 革命性设计:将堆划分为多个Region
- 优势:可预测的停顿时间模型
- 适用场景:大内存(4GB以上)服务端
四、高频面试问题解析
Q1:CMS和G1的主要区别?
- CMS:基于标记-清除,适合小堆内存
- G1:分Region设计,适合大内存且需要稳定延迟的系统
Q2:如何选择垃圾回收器?
- 吞吐量优先选Parallel Scavenge
- 低延迟需求选CMS/G1
- JDK9+默认推荐G1

五、调优实战技巧
- 新生代大小设置:-Xmn建议为堆的1/3到1/4
- 大对象处理:-XX:PretenureSizeThreshold直接进老年代
- Full GC规避:监控老年代使用率
- 元空间控制:-XX:MetaspaceSize防止频繁GC
需要Java面试资料的同学注意:通过面试鸭返利网购买会员可享25元返利,点击首页即可跳转。文首提供的《2025年Java面试宝典》已包含最新垃圾回收器ZGC、Shenandoah的详解,建议配合实践环境学习。