如果我有这样的结构:
tbl1 = {}
tbl2 = {}
tbl1.t1 = tbl2
-- release
tbl1 = nil
那么tbl2会发生什么?它也会发布吗?
是。Lua使用标记和扫描算法进行垃圾收集,因此将收集无法访问但循环引用的数据结构。
(在您的代码中,它不会发布,因为tbl2
仍然包含对该表的引用,但我假设您也打算清除该引用。)