在Lua中查找对象的所有引用。

我在应用程序的 Lua 部分有一个内存泄漏。不知何故,我的对象在应该被删除时没有被删除(甚至在我调用 collectgarbage(“collect”) 时也是如此)。我认为这意味着我在某个地方有一个悬挂的引用。

那么,我该如何获取有关对象各种引用所在位置的列表?例如:

obj = MyObject()
ref = obj
tbl = {obj}
obj = nil
print(getreferences(obj)) -- 应该打印类似 _G.ref,_G.tbl [1] 的东西

我可以为此编写自己的函数,但它将无法找到包含在闭包内部的引用。有什么建议吗?

原文链接 https://stackoverflow.com/questions/7166124

点赞
stackoverflow用户107090
stackoverflow用户107090

有一种工具可以遍历整个 Lua 宇宙。参见 http://lua-users.org/lists/lua-l/2006-07/msg00110.html

2011-08-23 21:43:01