查找 Lua 中对象的所有引用
我的应用程序的 Lua 部分存在内存泄漏。无论出于何种原因,我的对象在应该删除的时候却没有被删除(即使我调用collectgarbage("collect")
)。我认为这意味着我在某处有一个悬空的引用。
那么我怎样才能获得一个对象的各种引用所在位置的列表呢?例如:
obj = MyObject()
ref = obj
tbl = {obj}
obj = nil
print(getreferences(obj)) -- should print something like _G.ref, _G.tbl[1]
我只需为此编写自己的函数,但它将无法找到闭包内包含的引用。有什么建议吗?
I have a memory leak in the Lua part of my application. For whatever reason, my object is not getting deleted when it should (even when I call collectgarbage("collect")
). I assume this means I have a dangling reference somewhere.
So how may I obtain a list of where various references to an object reside? For example:
obj = MyObject()
ref = obj
tbl = {obj}
obj = nil
print(getreferences(obj)) -- should print something like _G.ref, _G.tbl[1]
I would simply write my own function for this, but it would not be able to find references contained inside of closures. Any advice?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
有一个工具可以遍历整个 Lua 宇宙。请参阅http://lua-users.org/lists/lua- l/2006-07/msg00110.html
There's a tool to traverse the whole Lua universe. See http://lua-users.org/lists/lua-l/2006-07/msg00110.html