2014-11-05 69 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