perl 释放内存问题【转】

最近一直在纠结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);

      这样可以处理将全部数据读取后,释放内存
posted on 2012-04-11 15:12  香格里拉\(^o^)/  阅读(2447)  评论(0编辑  收藏  举报