据我所知,跟踪 GC 无法避免完全 GC 期间的线程阻塞。
我用过 XNA+C#,GC 时间无法消除。所以我切换到低级语言 C,但我意识到我需要脚本语言。我正在考虑Lua,但我担心Lua的GC机制。 Lua 正在使用增量跟踪 GC,线程阻塞也应该如此。
那么我应该如何在实时游戏中处理这个问题呢?
最佳答案
Lua 的强大之处在于它不会妨碍你。想上课?这可以用元表构建。想要沙盒吗?使用 lua_setfenv .
至于垃圾收集器。首先按原样使用它。如果以后发现性能问题,请使用 lua_gc微调它的行为。
一些例子:
您也可以考虑另一种脚本语言。 Squirrel努力成为二代Lua。它试图保留 Lua 的所有优秀特性,同时摒弃任何设计错误。两者之间最大的区别之一是 squirrel uses reference counting而不是垃圾收集。事实证明,引用计数可能比垃圾收集慢一点,但它是非常确定的(也称为实时)。
关于garbage-collection - Lua 的 GC 和实时游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4064451/