我正在编写使用功能样式在 .NET 中构建游戏的工具。为此,我需要一个增量 GC,或者某种类型的 GC,其收集时间限制在 1 毫秒左右。我读了一篇关于实时增量 GC 的论文,它是单声道的 WIP,但无论如何我都找不到查看它的代码或使用它 - http://static.usenix.org/event/vm04/wips /goh.pdf
为了澄清我所说的“增量 GC”的含义,增量 GC 将单个垃圾收集周期分成多个工作片,这些工作片可以与程序执行交错,以便每个片可以在相对有限的时间内处理。增量 GC 功能的主要目的是通过在相对细粒度的级别上保持一致的响应来支持软实时应用程序。增量 GC 消除了由 .NET 的分代 GC 等主流 GC 引起的“尴尬停顿”。许多使用增量 GC 的系统的收集暂停时间大约为 1 毫秒。这非常适合游戏,因为它们需要在 16.667 毫秒内运行整个周期。.NET 分代 GC,OTOH,将导致 200 毫秒的典型暂停。
我真的很想避免花时间为单声道编写我自己的增量 GC,所以如果有人能告诉我目前有哪些替代(软)实时中心 GC,那就太好了。如果我需要编写自己的 GC,最好有一个开源的 GC,它可以作为从头开始编写自己的 mono GC 的一个很好的参考。
编辑:添加了对“增量”GC 含义的详细说明。