当前位置:  开发笔记 > 编程语言 > 正文

Lua垃圾收集表,嵌套表

如何解决《Lua垃圾收集表,嵌套表》经验,为你挑选了2个好方法。

[我读过Lua手册,但它没有提供可靠的答案.]

假设我有一个Lua Table,充当索引数组:

local myArray = {};
myArray[1] = "Foo";
myArray[2] = "Bar";

我该如何最好地处理这张桌子?我只是将myArray设置为nil吗?或者我是否必须遍历数组并将每个索引元素设置为nil?

同样地,假设我有一个Lua表,充当字典:

local myDictionary = {};
myDictionary["key1"] = "Foo";
myDictionary["key2"] = "Bar";

我可以将'myDictionary'设置为nil,还是必须迭代?

最后,我该怎么做,内存管理明智,我有嵌套表的地方?例如

local myNestedCollection = {};
myNestedCollection[1] = {1, 2, 3};
myNestedCollection[2] = {4, 5, 6};

我是否需要遍历每个子表,将它们设置为nil?谢谢你的帮助.



1> Adam Rosenfi..:

将局部变量设置为nil; 没有必要遍历所有键并将它们设置nil为.根据这个页面,Lua使用了标记和清除垃圾收集算法.一旦将局部变量设置为nil,其表中的键就变得无法访问,因此垃圾收集器将在下一个集合中收集它们.同样,如果这些对象也是表,它们的键也将无法访问,因此它们也将被收集.



2> SpliFF..:

在大多数GC中,当没有对象引用时,将收集对象.将参考链的顶部设置为nil会删除对子项的引用.如果这是唯一的参考,那么将收集孩子.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有