什么条件会触发 Java 的 young GC?

Sherwin.Wei Lv8

什么条件会触发 Java 的 young GC?

回答重点

在 Java 中,Young GC(Minor GC) 是针对新生代(Young Generation)对象的垃圾回收。

主要有三种情况会会触发 Young GC:

1)Eden 区空间不足

  • 新生代被划分为三个区域:Eden 区、S0(Survivor 0) 区和 S1(Survivor 1) 区。大部分新创建的对象会先分配到 Eden 区。
  • 当 Eden 区的对象填满,无法再为新的对象分配空间时,Young GC 会被触发,回收新生代中不再使用的对象。

2)Eden 区+Survivor 区都装满

  • 如果 Eden 区和 Survivor 区的空间都不足以存放新分配的对象时,Young GC 也会被触发,清理空间并将幸存的对象转移到 Survivor 区或老年代。

3)部分垃圾回收器在 full gc 之前

  • 有一些收集器的回收实现是在 full gc 前会让先执行以下 young gc。
  • 比如 Parallel Scavenge,不过有参数可以调整让其不进行 young gc。
Comments
On this page
什么条件会触发 Java 的 young GC?