星海

JVM · 单选题 · 第 26 题

Java 后端开发面试 · 第 26 题

分代收集中,新生代通常采用复制算法,主要原因是?

  1. A新生代的空间比老年代大得多,复制算法正好可以充分利用这些多出来的空间
  2. B新生代对象大多很快死亡,存活的少,复制代价低,而且不产生内存碎片
  3. C复制算法完全不需要预留额外的空间,内存利用率比标记-整理算法还要高
  4. D老年代对象太大无法移动,所以只有新生代能用,复制算法本身没有其他优势

答案

B B. 新生代对象大多很快死亡,存活的少,复制代价低,而且不产生内存碎片

解析

新生代每次 GC 只需把少量存活对象复制到 Survivor 区,然后整块清空 Eden,速度快且没有碎片。复制算法要预留空间,HotSpot 按 Eden:S0:S1 = 8:1:1 划分,只浪费 10%。老年代对象存活率高,复制成本大,所以多用标记-清除或标记-整理。

在线刷这套题:即时判分、错题本、闪卡复习,不用登录就能练。