lua 垃圾回收的经验

我已经阅读了关于lua表格垃圾回收的手册和在线帖子。问题是是否有人在实际使用中有经验。 我有一个表格,随着时间的推移,我们不断地添加和删除(设置为NULL)条目。由于各种原因,有些条目可能无法删除(在这种情况下不相关)。随着时间的推移,这些条目会发生什么?理想情况下,我希望将它们从表格中清除(过时,垃圾回收等),以便内存占用不会膨胀。 处理这个问题的任何真实世界的示例都将非常有用。

点赞
用户2858170
用户2858170

Lua 的垃圾收集器是其内存管理的一部分。它是增量垃圾收集器,其目的是释放未使用的内存。定期它会收集所有不能访问 root 集的节点,包括全局表 _G、主线程和其他一些节点。所以唯一的标准是 Lua 是否仍能通过任何一组引用访问内存。

一旦您将最后一个引用设置为该内存的nil,该内存就可以被垃圾收集。

这与自上次使用值以来的时间或自动处理您认为过时的内容无关。

如果您想要跟踪表元素的年龄,则必须为每个元素存储一个时间戳,并在其过时时手动删除该元素。

2019-03-28 21:42:34