Lua 内存控制关于表

如果我的代码结构是这样的:

tbl1 = {}
tbl2 = {}
tbl1.t1 = tbl2
-- 释放
tbl1 = nil

那么 tbl2 会发生什么?它也会被释放吗?

点赞
用户646619
用户646619

是的。Lua使用标记-清扫算法进行垃圾回收,因此不可达的但是有循环引用的数据结构将会被收集。

(在您的代码中,它不会被释放,因为tbl2仍然包含对该表的引用,但我假设您也打算清除它。)

2014-04-18 12:47:58