在我的Perl程序中是否有任何查找内存泄漏的工具?

Xet*_*ius 12 perl memory-leaks

我在Windows 2003 Server上使用ActiveState Perl 5.6,并且遇到了一些内存泄漏问题.是否有任何好的工具(甚至可以提供线索的坏工具),我可以使用它来帮助找到它们.

geo*_*car 13

所有perl程序内存泄漏都将是保存在引用上的XS,或者是循环数据结构.如果您知道哪些结构可能包含循环,则Devel :: Cycle是查找循环引用的绝佳工具.Devel :: Peek可用于查找引用计数高于预期的对象.

如果你不知道在哪里看,Devel :: LeakTrace :: Fast可能是一个很好的第一名,但是你需要一个用于调试的perl.

如果你怀疑泄漏是在XS空间内,那就更难了,Valgrind可能是你最好的选择.Test :: Valgrind可以帮助您减少搜索所需的代码量,但这不适用于Windows,因此您必须将(至少泄漏部分)移植到Linux才能执行此操作.


Rya*_*son 5

Devel :: Gladiator将显示一个列表,列出Perl在任何给定时间内存在的每个变量类型的数量,以及它们引用的内容.对于确定正在创建但未释放的对象类型非常有用.