2014-11-05 63 views
1

下面是我使用Memory :: Usage的一个测试的输出结果。这是否意味着我的代码有很大的内存泄漏,因为diffs非常高?perl中的内存泄露

time vsz (diff) rss (diff) shared (diff) code (diff) data (diff) 
0 264620 (264620) 95848 (95848) 8460 (8460) 4 (4) 85440 (85440) before 
3 294668 (30048) 115552 (19704) 13728 (5268) 4 (0) 99808 (14368) after 

这是否意味着我的代码有大内存泄漏,因为差异非常大?

有人可以告诉更好的方式来测试内存泄漏

+1

Tim Bunce致力于Devel :: SizeMe(http://blog.timbunce.org/2012/10/05/introducing-develsizeme-visualizing-perl-memory-use/)他在YAPC上就此发表了演讲:http://youtu.be/GIIeOntmojg它非常丰富,并且会改变你认为你知道的关于使用Perl进行内存管理的一些事情。 – DavidO 2014-11-05 17:16:26

+0

感谢@DavidO供参考 – pkm 2014-11-06 07:18:03

回答

1

的DIFF列表示内存消耗的变化,当它增长太多,这不是一个好兆头。

测试内存泄漏的另一种方法是Test::LeakTrace

+0

我的理解是,让我们说我们调用一个函数来分配一些内存,当函数的作用域理想地结束时,应该释放内存并且diff应该是0(意味着内存分配=内存释放)。我对么 ? – pkm 2014-11-05 08:33:41

+0

理想情况下,差异应该是0,但实际上并不总是可能的。 – user3156718 2014-11-05 09:48:39

+0

也我试过使用测试:: Leaktrace,但似乎不能够正确使用它可以指导一些其他更好的链接相关的这个模块 – pkm 2014-11-05 11:40:12