PDF大白话说Java面试题 — 02-JVM篇第4题什么时候会触发 Young GC什么时候会触发 Full GC回答一句话概括Young GC当新生代Eden 区内存不足时触发。Full GC当 JVM 整体内存不足包括老年代或元空间时触发。1. Young GC 的触发条件常见场景新对象不断被创建占满 Eden 区后触发 Young GC。如果 Survivor 区无法容纳存活对象则部分对象会被晋升到老年代。底层原理Young GC 使用的是复制算法将 Eden 区和 Survivor 区的存活对象复制到另一个 Survivor 区。如果 Survivor 区空间不足则直接晋升到老年代。2. Full GC 的触发条件常见场景老年代空间不足当老年代无法容纳从年轻代晋升的对象时触发 Full GC。元空间不足当元空间存储类元信息空间不足时触发 Full GC。手动调用 System.gc()虽然不一定会立即触发 Full GC但会建议 JVM 进行垃圾回收。显式分配担保失败当年轻代的对象无法通过分配担保机制转移到老年代时触发 Full GC。底层原理Full GC 使用的是标记-清除或标记-整理算法扫描整个堆区并回收垃圾对象。3. 注意事项优化建议减少 Young GC适当增大 Eden 区的大小避免频繁触发 Young GC。减少 Full GC合理设置老年代和元空间的大小避免内存不足。监控工具使用 JVM 自带的工具如jstat、jvisualvm监控 GC 行为分析 GC 日志找出瓶颈并优化。面试官视角面试官可能会问“如何监控和分析 GC 行为”答可以使用jstat查看 GC 统计信息或者通过-XX:PrintGCDetails输出 GC 日志进行分析。面试官可能会追问“什么是分配担保机制”答当年轻代的对象无法放入 Survivor 区时会尝试将其直接晋升到老年代如果老年代空间不足则触发 Full GC。