我已经阅读了关于表格的lua垃圾收集的“预期”行为的手册,在线帖子。问题是,如果有人在真实的用例中有这方面的经验。我有一个表,随着时间的推移,我们不断添加和删除(设置为NULL)条目。某些条目可能无法删除(由于各种原因 - 在此上下文中不相关)。一段时间内这些参赛作品会发生什么?理想情况下,我希望将它们从表中清除(老化,垃圾收集等),以便内存占用不会膨胀。处理这个问题的任何实际例子都非常有用。
Lua的垃圾收集器是其内存管理的一部分。这是一个增量垃圾收集器。其目的是释放未使用的内存。它不时收集从根集中无法访问的所有内容,包括全局表_G,主线程和一些其他节点。所以唯一的标准是Lua是否仍然能够通过任何参考集访问内存。
一旦你设置了对该内存的最后一个引用nil,内存可能被垃圾收集。
这与您上次使用值或自动删除您认为过时的内容的时间无关。
如果要跟踪表元素的年龄,则必须为每个元素存储时间戳,并在元素过时后自行删除元素。