使用块结构堆的复制收集器是不可靠的—wingolog

主要观点:

  • 介绍了半空间收集器的优点,如作为正确性预言机、性能可理解等,且简单半空间收集器具有可靠性。
  • 指出多线程使经典半空间收集器难以扩展,通常用块结构堆来解决,块结构堆需大对象空间,且通常选择大对象分配阈值小于块大小。
  • 强调带有块结构堆的复制收集器不可靠,原因是非交换式疏散会导致收集后碎片不一定小于收集前碎片。
  • 探讨了收集器中不可靠性的其他来源,如多线程、并行收集器线程、收集时分配内存、虚拟内存等。
  • 认为只有在没有线程的情况下坚持可靠收集器才有意义,增加堆内存可缓解碎片相关的不可靠性,虚拟内存和可增长堆也很好。

关键信息:

  • 半空间收集器在 Whippet 开发中的作用及特点。
  • 块结构堆的解决方案及相关细节。
  • 不可靠性的各种情况及原因。
  • 增加堆内存和使用虚拟内存可缓解不可靠性。

重要细节:

  • 半空间收集器总是移动对象,需精确枚举对象图边缘。
  • 简单半空间收集器在给定特定存活对象集时,有单一堆大小使分配和收集成功或失败。
  • 块结构堆按 256MB 分成 4096 个 64kB 的块,用于多线程分配。
  • 复制收集器在块结构堆下不可靠,不同对象顺序会导致块末碎片不同。
  • 多线程、并行收集器线程等会导致收集器的其他不可靠性来源。
  • 增加堆内存可缓解碎片相关和多线程相关的不可靠性,虚拟内存和可增长堆有益。
阅读 18
0 条评论