Memory 关于表的Lua内存控制

Memory 关于表的Lua内存控制,memory,lua,garbage-collection,lua-table,Memory,Lua,Garbage Collection,Lua Table,如果我有这样的结构: tbl1 = {} tbl2 = {} tbl1.t1 = tbl2 -- release tbl1 = nil 那么tbl2会怎么样?它也会发行吗 是的。Lua使用标记和扫描算法进行垃圾收集,因此将收集无法访问但循环引用的数据结构 (在您的代码中,它不会被释放,因为tbl2仍然包含对该表的引用,但我假设您也打算清除该引用。)如果tbl1.a=ud1,并且ud1是用户数据类型,Lua会将ref count添加到ud1吗?@1hunch1kill Lua不使用引用计数。它使

如果我有这样的结构:

tbl1 = {}
tbl2 = {}
tbl1.t1 = tbl2
-- release
tbl1 = nil

那么tbl2会怎么样?它也会发行吗

是的。Lua使用标记和扫描算法进行垃圾收集,因此将收集无法访问但循环引用的数据结构


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

如果tbl1.a=ud1,并且ud1是用户数据类型,Lua会将ref count添加到ud1吗?@1hunch1kill Lua不使用引用计数。它使用标记和扫描。您不必担心循环引用的对象不会被释放。