垃圾收集 – 为什么Lua使用垃圾收集器而不是引用计数?
发布时间:2020-12-15 00:23:33 所属栏目:大数据 来源:网络整理
导读:我自己听到并经历过:Lua的垃圾收集器可能导致游戏中严重的FPS下降,因为它们的脚本部分增长。 这是我发现与垃圾收集器相关的,例如,每个Vector()用户数据对象暂时创建,直到收集垃圾。 我知道Python使用引用计数,这就是为什么它不需要像Luas GC这样的任何
我自己听到并经历过:Lua的垃圾收集器可能导致游戏中严重的FPS下降,因为它们的脚本部分增长。
这是我发现与垃圾收集器相关的,例如,每个Vector()用户数据对象暂时创建,直到收集垃圾。 我知道Python使用引用计数,这就是为什么它不需要像Luas GC这样的任何巨大的性能进行步骤。 >为什么Lua不使用引用计数来摆脱垃圾? 解决方法
因为引用计数垃圾收集器可以容易地泄漏物体。
简单的例子:双向列表。每个节点都有一个指向下一个节点的指针 – 并且本身指向下一个节点。如果您只是取消引用列表本身并且希望它被收集,您只是泄漏了整个列表 – 没有一个节点的引用计数为零,因此它们将保持对方的活动。使用引用计数垃圾收集器,每当您有循环对象时,您基本上都需要将其视为非托管对象,并在完成后自行明确处理。 请注意,除了引用计数之外,Python还使用了适当的垃圾回收器。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |