Java面试题更新 2026-08-05

请说明Java中young GC、old GC、full GC和mixed GC这几种垃圾回收事件的区别,包括触发条件、回收区域以及它们之间的关联。

技术原理JavaJVM

考察说明

考查对JVM分代垃圾回收机制中不同GC事件类型的理解,尤其是其触发条件和回收范围的差异。

回答思路

  1. 【回答框架 1】Young GC(又称Minor GC)只回收新生代(Eden区和幸存区),通常在Eden区空间不足时触发,采用复制算法,STW时间短。
  2. 【回答框架 2】Old GC回收老年代,但此术语不够精确,一般指针对老年代的回收,如CMS的concurrent mode failure或G1的混合回收中的老年代部分,具体触发条件因收集器而异。
  3. 【回答框架 3】Full GC回收整个堆,包括新生代和老年代,通常伴随着STW,触发条件包括老年代空间不足、元空间不足或显式调用System.gc等,开销大。
  4. 【回答框架 4】Mixed GC是G1收集器特有的,回收新生代和部分老年代(根据停顿预测模型选择),以控制停顿时间,触发条件与G1的IHOP和回收进度相关。
  5. 【回答框架 5】四种GC在触发条件、回收区域、算法和STW时间上各有不同,实际中需结合具体垃圾收集器(如Serial、Parallel、CMS、G1)分析其行为。
  6. 【关键点 1】Young GC只回收新生代,Full GC回收整个堆,Mixed GC是G1特有的回收新生代和部分老年代。
  7. 【关键点 2】Full GC通常STW时间最长,Mixed GC通过筛选老年代区域来优化停顿,但GC行为依赖具体收集器。
  8. 【关键点 3】触发条件不同:Young GC在Eden满时触发,Full GC在老年代满或元空间不足时触发,Mixed GC在G1的回收速率跟不上分配速率时触发。
  9. 【易错点 1】不要把old GC当作独立GC事件,它通常指老年代回收,如CMS的old generation GC或G1的mixed GC中的老年代部分。
  10. 【易错点 2】不要认为Full GC一定比Mixed GC慢,实际停顿时间受堆大小和收集器影响。
  11. 【易错点 3】不要忽视具体收集器的影响,不同收集器对GC事件的划分和触发条件有差异。