有没有一个增量GC可用于mono,我可以使用它或获取它的源代码



我正在编写使用函数式风格在.NET中构建游戏的工具。为此,我需要一个增量GC,或者某种收集时间限制在1ms左右的GC。我读过一篇关于实时增量GC的论文,它是mono的WIP,但我无论如何都找不到查看其代码或使用它的方法http://static.usenix.org/event/vm04/wips/goh.pdf

为了阐明我所说的"增量GC"的含义,增量GC将单个垃圾收集循环拆分为多个工作片段,这些工作片段可以与程序执行交错,这样每个片段都可以在相对有限的时间内处理。增量GC功能的主要目的是通过保持软实时应用程序在相对细粒度级别上的一致响应来支持它们。增量GC消除了主流GC(如.NET的一代GC)造成的"尴尬停顿"。许多使用增量GC的系统的采集暂停时间大约为1ms。这非常适合游戏,因为它们需要在16.667毫秒内运行整个周期。.NET世代的GC OTOH将导致200毫秒的典型暂停。

我真的很想避免把时间花在为mono编写自己的增量GC上,所以如果有人能告诉我目前有什么替代(软)实时中心GC可用,那就太好了。如果我需要编写自己的GC,那么拥有一个开源GC将是一件很棒的事情,它将为从头开始编写自己的mono-GC的人提供一个很好的参考。

编辑:增加了对"增量"GC含义的阐述

我不知道Mono是否有一个带源代码的增量GC,但有一个(针对oCaml派生的语言)是开源的,似乎专注于高性能的HLVM。作者Jon Harrop在这里也有一个博客,里面有许多关于垃圾收集和相关技术的优秀文章。

希望这能有所帮助!

相关内容

最新更新