您的位置:首页 > 其它

perl 释放内存问题【转】

2012-04-11 15:12 232 查看
最近一直在纠结perl里如何释放内存的问题。下面有几个简单的语句:

1、 perl -e 'for $i(1..10000){$hash{$i} = 0;print "$i\t$hash{$i}\n";delete $hash{$i};}for $j(10001..20000){$hash{$j}=1;print "$j\t$hash{$j}\n"}'
2、 perl -e 'for $i(1..10000){$hash{$i} = 0;print "$i\t$hash{$i}\n";undef $hash{$i};}for $j(10001..20000){$hash{$j}=1;print "$j\t$hash{$j}\n"}'
3、 perl -e 'for $i(1..10000){$a[$i]=0;print "$i\t$a[$i]";delete $a[$i];}for $j(10001..20000){$a[$j]=1;print "$j\t$a[$j]\n";}'
4、 perl -e 'for $i(1..10000){$a[$i]=0;print "$i\t$a[$i]";undef $a[$i];}for $j(10001..20000){$a[$j]=1;print "$j\t$a[$j]\n";}'

将哈希和数组里面的元素删除或初始化后,其占用的内存并不会释放。

然后,使用了 Data::Dumper :

use Data::Dumper;
%disney = ('cat'=>'Tom', 'mouse' => 'Jerry', dog=>'goofie');
delete $disney{'cat'};
$disney{'dog'} = '';
print Dumper(\%disney);

这样可以处理将全部数据读取后,释放内存
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: