Minor GC(次要垃圾回收)是Java垃圾回收机制中的一种,专门针对新生代(Young Generation)的垃圾回收过程。它的主要作用是清理新生代中的无用对象,释放内存空间。
Minor GC 的特点
触发条件
当新生代的Eden区空间不足时,会触发Minor GC;
新对象通常先在Eden区分配,如果Eden区满了,就会触发Minor GC。
回收范围
Minor GC只清理新生代(包括Eden区和Survivor区),不会涉及老年代;
如果老年代引用了新生代的对象,这些对象会被视为“存活对象”,不会被回收。
过程
标记:首先标记出Eden区和Survivor区中所有存活的对象;
复制:将存活的对象从Eden区和一个Survivor区(From区)复制到另一个Survivor区(To区);
清理:清理Eden区和From区中的无用对象;
晋升:如果某些对象在Survivor区中存活了多次(达到一定年龄阈值),它们会被晋升到老年代。
特点
Minor GC通常比较频繁,但执行速度快,因为新生代的空间相对较小;
它是“停止-复制”(Stop-and-Copy)算法的一种实现,适合处理生命周期较短的对象。
Minor GC 与 Full GC 的区别
Minor GC:只清理新生代,速度快,频率高;
Full GC:清理整个堆(包括新生代和老年代),速度慢、频率低,通常发生在老年代空间不足或显式调用
System.gc()
时。