2

我应该在逐行读取文件时积极释放内存吗?一个例子:

while (<FILE>) {
  my $line = $_;
  <process line>
  undef($line);
}

“取消定义” $line 变量是减少内存消耗的好选择吗?

4

3 回答 3

11

不。请参阅 perlfaq3 以了解关于 Perl 中的内存使用应该(和不应该)做什么的更多信息。

于 2009-12-05T23:59:47.150 回答
9

这应该没有什么区别,因为变量将在下一次循环迭代开始时立即释放,无论您是否明确取消定义它。

于 2009-12-05T23:39:51.213 回答
5

不。除非您文件中的行的长度相差很大,并且其中一些长度很大(比如说 10 兆字节或以上),否则为什么还要担心呢?

是否有证据表明循环消耗了太多内存?

于 2009-12-06T21:40:12.960 回答