我刚刚使用 List::MoreUtils 中的each_array() 和each_arrayref() 发现了严重的内存泄漏。
这三行代码是每次运行时执行四千次的子例程的一部分。
我的目标是为哈希中已有的值提供正确的格式。我有固定数量的哈希键和每个哈希键的格式字符串。
my %hash = ();
# ...
my $two_arrays = each_arrayref( $field_list, $field_list_format );
while ( my ( $field, $format ) = $two_arrays->() ) {
$hash{ $field } = sprintf $format, $hash{ $field };
}
如果我贴一个return;
before my $two_arrays ...
,泄漏消失。相同return;
超过最后一行会导致泄漏。
由于子例程是守护程序的一部分,我注意到内存( VIRT 和 RES )的持续增长。
我是不是做错了什么?我不知道的each_array() 或each_arrayref() 是否存在内存泄漏?
- 列表::MoreUtil(版本 0.22)
- Linux 2.6.32-32-generic (Ubuntu 10.04) 上的 Perl 5.12.1 (带线程的 x86_64)
List::MoreUtil ( VERSION 0.22 ) 的日期为 2006 年 7 月,即 5 年前。当前版本是0.32,该版本是否还存在泄漏?在过去的几个版本中修复了一些内存泄漏:http://cpansearch.perl.org/src/ADAMK/List-MoreUtils-0.32/Changes http://cpansearch.perl.org/src/ADAMK/List-MoreUtils-0.32/Changes
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)