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