🔥 JVM垃圾回收面试题 | 2026 Java实习必背

统计显示:JVM GC是Java实习面试被问概率最高的考点之一,超过70%的技术面会涉及。这篇文章覆盖10道GC高频题+标准答案,背完就能答。

70%+
面试出现率
10
必背题目
2026
最新考纲
💡 省时间直接看:面试官90%只问前5题。背完前5题就能过技术面。

Q1: Java堆内存怎么划分?年轻代和老年代各用什么GC算法?

面试官想听什么:分区结构+分代收集思想

标准答案:堆分为年轻代(Young)老年代(Old)。年轻代又分Eden区和两个Survivor区(S0/S1),默认比例8:1:1。

年轻代用标记-复制算法——Eden满后触发Minor GC,存活对象复制到Survivor,年龄+1。老年代用标记-清除/标记-整理——空间不足触发Major GC(Full GC)。

加分句: "分代收集的核心假设是'大部分对象朝生夕死'——一次Minor GC后90%以上的对象会被回收。"

Q2: CMS和G1的区别?为什么G1取代了CMS?

面试官想听什么:停顿时间vs吞吐量,G1的Region设计

标准答案:

加分句: "JDK9起G1成为默认收集器,JDK14移除了CMS。G1解决了CMS的碎片问题,同时提供可预测的停顿时间。"

Q3: Full GC什么时候触发?怎么排查频繁Full GC?

面试官想听什么:触发条件+排查思路+工具

触发条件(5种):

  1. 调用System.gc()(建议,不一定执行)
  2. 老年代空间不足
  3. 方法区(元空间)空间不足
  4. CMS GC出现Concurrent Mode Failure
  5. Minor GC后存活对象太多,Survivor放不下,直接进老年代

排查思路:jstat -gcutil 进程ID 1000实时看GC频率→jmap -heap看堆配置→jmap -histo找大对象→MAT分析dump文件。

Q4: 三色标记法是什么?漏标问题怎么解决?

面试官想听什么:并发标记的"漏标"问题+SATB/增量更新

标准答案:三色标记是CMS/G1等并发收集器用的标记算法,将对象分为:

漏标问题:并发标记时,用户线程可能把一个黑色对象引用的白色对象删除,同时灰色对象又不再引用它→白色对象被"漏掉"。

解决方案:G1用SATB(原始快照)——标记开始时拍快照,删除引用时通过写屏障记录到SATB队列。CMS用增量更新——新增引用时把黑色对象变回灰色重新扫描。

Q5: ZGC有什么特点?和G1的区别?

面试官想听什么:亚毫秒级停顿+染色指针

标准答案:ZGC是JDK11引入的低延迟收集器,目标是把STW控制在亚毫秒级(<1ms),支持TB级堆。

核心技术:染色指针(Colored Pointer)——在64位指针中嵌入GC状态信息(marked0/marked1/remapped/finalizable),不需要额外对象头存储。配合读屏障,访问对象时自动修正指针状态。

和G1的区别:G1停顿10-100ms级,ZGC停顿<1ms级。G1有分代(Young/Old),ZGC不分代(JDK21引入分代ZGC)。大堆(>32G)场景ZGC碾压G1。

Q6: 什么时候对象进入老年代?

四条路:①年龄到了(默认15,-XX:MaxTenuringThreshold)②动态年龄判定:Survivor中同龄对象超过50%时,大于该年龄的直接晋升 ③大对象直接分配在老年代(-XX:PretenureSizeThreshold)④Minor GC后Survivor放不下。

Q7: 什么是STW?哪些GC阶段会STW?

STW=Stop The World,暂停所有用户线程。CMS的初始标记和重新标记会STW;G1的初始标记、最终标记、筛选回收会STW;ZGC只有根扫描极短STW(<1ms)。

Q8: GC Roots有哪些?

①栈帧中的局部变量表引用 ②静态变量引用 ③常量池引用 ④JNI引用的对象 ⑤同步锁持有的对象 ⑥Java虚拟机内部的引用(如Class对象、异常对象)。

Q9: 强引用、软引用、弱引用、虚引用的区别?

强引用:new出来的,永不回收。软引用:内存不足时回收,适合做缓存。弱引用:GC时必回收,适合WeakHashMap。虚引用:幽灵引用,唯一作用是对象被回收时收到通知(配合ReferenceQueue)。

Q10: 怎么选择GC收集器?

小堆(<4G)且低延迟:Serial。吞吐量优先:Parallel Scavenge+Parallel Old。JDK8/11:G1(默认,平衡)。JDK17+超大堆(>32G):ZGC。JDK21+:分代ZGC。

🚀 更多免费Java面试工具

☕ 面试模拟器 📝 简历生成器 📚 面试题库 💼 接单服务

📅 更新于2026年5月 · 持续追踪最新面试趋势 · GitHub