实时游戏中的垃圾回收

lua-users home
wiki

关于实时游戏中垃圾回收的一些笔记,与 Lua 相关。请更正、扩展和更新这些笔记。-- ThatcherUlrich

版本说明:Lua 5.1 已经有了增量式 GC,所以这些要点中很多可能只有历史意义。

为了保持低延迟操作,垃圾收集器必须定期执行少量工作。对于游戏来说,这意味着游戏循环应该在每一帧调用一次垃圾收集器。这比文献中通常讨论的粒度要粗得多,文献中通常关注的是多处理器算法。然而,Johnstone 的论文明确地解决了单处理器的情况。
写屏障非常简单;根据具体算法的不同,存在一些变体,但最终它可能只有 5 到 10 行 C 代码,以及 10 到 20 条指令。

实现说明:如果 Lua 实现能够在写入内部(表)指针时使用宏(也许它已经这样做了),那就太好了。然后,一个增量收集器插件可以将这个宏定义为对写屏障的函数调用(或写屏障本身的内联代码)。


最近更改 · 偏好设置
编辑 · 历史记录
最后编辑于 2009 年 3 月 16 日下午 12:14 GMT (差异)