Minor GC/Young GC、Major GC/Old GC、Mixed GC、Full GC 都是什么意思?

部分收集(Partial GC)是指垃圾收集的目标范围不是整个 Java 堆,而是针对特定部分进行的收集。部分收集可以进一步细分为以下几种类型:

  • 新生代收集(Minor GC/Young GC):仅针对新生代进行垃圾收集。新生代收集主要回收新生代中的垃圾对象,通常使用标记-复制算法进行。这种收集频率较高,因为新生代中的对象通常存活时间较短。
  • 老年代收集(Major GC/Old GC):仅针对老年代进行垃圾收集。目前只有CMS(并发标记清除)收集器会执行单独的老年代收集行为。老年代收集主要回收老年代中的垃圾对象,以保持老年代的空间可用性。
  • 混合收集(Mixed GC):同时对新生代和部分老年代进行垃圾收集。目前只有G1(Garbage-First)收集器会执行混合收集。混合收集的目标是回收整个新生代以及部分老年代的垃圾对象,以维持整体堆的空间可用性。

整堆收集(Full GC)是对整个 Java 堆和方法区进行的垃圾收集。它是最耗时的一种收集方式,因为它需要停止所有应用线程并扫描整个堆内存。整堆收集主要用于回收整个堆中的垃圾对象,包括新生代和老年代,以及方法区中的废弃常量、无效类等。

这些不同的收集方式在垃圾回收过程中有不同的应用场景和优化策略,通过灵活地选择适当的收集方式,可以提高垃圾收集的效率和性能。

标签: java, Java面试题, Java问题合集, Java编程, Java问题精选, Java常见问题