当前位置:主页 > www.mobile288365.com >

Cloud Wind的BLOG Lua 5.2新一代GC

作者:365bet365网址发布时间:2019-04-07 19:25

Lua的作者一再强调它是实验性的,因为它不确定这个模型是否应该优于之前的增量模式。
邮件列表反复显示在将来的Lua版本中可能会删除此功能。
主要原因是gc模块的实现复杂性增加,但在实际项目中很难获得更有效的实际证据。
我读了lua5。
2
相关代码2的生成代码可能以这种方式实现。
在世代模式中,
在清理阶段,已处理的黑色对象(不可擦除对象)不再返回白色(要扫描的对象),但已将OLDBIT标记添加到对象中。
Lua分配新的GCObjects以从一端加入对象列表,因此一旦在清理阶段找到OLDBIT标志,您将无法遍历链接列表。
生成的目的是因为清洁阶段只能处理最后一个gc末尾新添加的对象。
它可以大大降低每个gc的清洁成本。
(例如,在过去,我们在虚拟机中至少遍历所有对象一次,使黑色对象变白,并释放白色对象。)
由于在擦除阶段不再更改黑色标记,因此在新扫描轮次期间可以显着减少扫描对象的数量。
这是因为未触摸的旧对象是黑色,黑色对象不再交叉。
扫描过程仅需要处理灰色对象和灰色对象所引用的新对象(白色)。
这意味着不需要遍历在Gc时间期间未访问的过去对象。
在世代模式中,整个收集过程仍会定期激活。增量模式比单步长。它是一个停止所有对象的停止世界操作。
但是,当永久使用内存稳定并且大多数临时对象在短时间内使用时,完整集合的激活非常罕见。
此外,大多数临时物体都会快速清理,从而降低整体负荷。

上一篇:Minamiyama Minami的真实故事

下一篇:没有了

推荐新闻: