当前位置 : 主页 > 网络编程 > lua >

垃圾收集 – 为什么Lua使用垃圾收集器而不是引用计数?

来源:互联网 收集:自由互联 发布时间:2021-06-23
我自己听到并经历过:Lua的垃圾收集器可能导致游戏中严重的FPS下降,因为它们的脚本部分增长。 这是我发现与垃圾收集器相关的,例如,每个Vector()用户数据对象暂时创建,直到收集
我自己听到并经历过:Lua的垃圾收集器可能导致游戏中严重的FPS下降,因为它们的脚本部分增长。

这是我发现与垃圾收集器相关的,例如,每个Vector()用户数据对象暂时创建,直到收集垃圾。

我知道Python使用引用计数,这就是为什么它不需要像Luas GC这样的任何巨大的性能进行步骤。

>为什么Lua不使用引用计数来摆脱垃圾?

因为引用计数垃圾收集器可以容易地泄漏物体。

简单的例子:双向列表。每个节点都有一个指向下一个节点的指针 – 并且本身指向下一个节点。如果您只是取消引用列表本身并且希望它被收集,您只是泄漏了整个列表 – 没有一个节点的引用计数为零,因此它们将保持对方的活动。使用引用计数垃圾收集器,每当您有循环对象时,您基本上都需要将其视为非托管对象,并在完成后自行明确处理。

请注意,除了引用计数之外,Python还使用了适当的垃圾回收器。

网友评论