代码之家  ›  专栏  ›  技术社区  ›  Bonsaisteak

为什么年轻一代需要三个区域来收集垃圾?

  •  0
  • Bonsaisteak  · 技术社区  · 8 年前

    我知道年轻一代分为伊甸园、从、到地区。 但是有人能告诉我,如果我们只有2个区域,比如第一区,第二区,那可以吗?

    我认为我们仍然可以只在两个区域进行复制垃圾收集,如下所示。

    1. 新对象出现=>把它们放在第一位
    2. 当第1个已满时,将活动的复制到第2个,并在第1个删除所有
    3. 新对象再次出现=>将它们放在第二位
    4. 当第2个已满时,将活动的复制到第1个,并在第2个删除它们 等等

    那么,为什么我们甚至需要一个额外的(伊甸园)区域呢?

    这样对性能更好吗? 提前谢谢。

    1 回复  |  直到 8 年前
        1
  •  3
  •   apangin    8 年前

    在您的方案中,对象不能占用超过一半的Young Gen,因此Young Gen内存的50%总是被浪费。

    与空间分开和分离的空间通常比伊甸园小。这有助于减少内存开销,同时保留快速复制收集器的优点。

    推荐文章