手头的问题是发现内存泄漏。我使用了 Devel::Refcount 来显示我的应用程序中的哪些对象不应该保留在内存中。
已经提出了三种方法来找到与这些结构的难以捉摸的联系。
1 - 也许存在一种数据结构,可以让我获得引用我的对象的符号列表,这将是理想和直接的。
2 - 迭代所有已定义名称空间中的符号表以查找引用并使用迭代堆栈来确定它在哪里。
3 - 插入一个钩子,当特定引用的链接计数向上或向下更改时,我可以记录堆栈位置以及持有该链接的符号的地址。我可以使用它来查找哪些符号直接持有我的参考。
那么这可能吗?这种自省是很棘手的事情,我可能对 perl 非常了解,但我不知道该怎么做。我对padwalker的研究似乎可能有钥匙,但没有结出硕果。你的意见?