查找 Lua 中对象的所有引用

发布于 2024-12-01 10:24:26 字数 355 浏览 0 评论 0原文

我的应用程序的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空心↖ 2024-12-08 10:24:26

有一个工具可以遍历整个 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文