什么条件会触发 Java 的 young GC?
什么条件会触发 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