首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的Perl程序中有没有什么工具可以用来查找内存泄漏?

我的Perl程序中有没有什么工具可以用来查找内存泄漏?
EN

Stack Overflow用户
提问于 2008-11-17 11:45:03
回答 3查看 4.3K关注 0票数 12

我在Windows2003Server上使用ActiveState Perl5.6,并且遇到了一些内存泄漏问题。有没有好的工具(或者甚至坏的工具可以给出线索),我可以用来帮助找到它们。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-11-17 12:19:49

所有perl程序内存泄漏要么是持有引用的XS,要么是循环数据结构。如果你知道什么结构可能包含循环,Devel::Cycle是一个很好的查找循环引用的工具。Devel::Peek可用于查找引用计数高于预期的对象。

如果您不知道还可以在哪里查找,Devel::LeakTrace::Fast可能是一个很好的首选,但是您需要一个用于调试的perl。

如果您怀疑泄漏是在XS-space内部发生的,那就更难了,Valgrind可能是您最好的选择。Test::Valgrind可能会帮助你减少你需要搜索的代码量,但这在Windows上是行不通的,所以你必须(至少是有漏洞的部分)移植到Linux才能做到这一点。

票数 13
EN

Stack Overflow用户

发布于 2009-12-08 07:06:38

Perl将向您显示一个列表,其中列出了在任何给定时间,Devel::Gladiator在内存中有多少个变量类型,以及它们引用了什么。对于找出正在创建但未释放的对象的类型非常有用。

票数 5
EN

Stack Overflow用户

发布于 2013-09-30 21:06:28

由于还没有提到,Devel::Size将报告数据结构的大小。没有给出其他信息,它用来确定数据结构“边界”的规则也是不透明的。对于简单的结构,这不是问题。

Devel::SizeMe是我的一个业余爱好项目,旨在解决Devel::大小的问题,并支持可视化perl解释器的整个内存使用情况。有关更多信息,请参阅my blog,其中包括截屏视频和视频的链接。我的目标之一是实现泄漏的检测和可视化,但这仍然是一条路要走。

更新:

除了其他评论之外,您可能会发现我在LPW2013上的Perl Memory Use talk很有用。我推荐看the screencast,因为它解释了幻灯片,并在最后有一些可爱的视觉效果和一些问答。

我还建议看看我在演讲中提到的Paul Evans Devel::MAT模块。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/295385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档