小编Eze*_*Kuo的帖子

如何识别在Perl脚本中累积内存使用的位置?

在我的Perl脚本中,它以高占用内存的累积速度运行.我已经尝试在不再需要时立即清除可疑变量,但问题无法解决.是否有任何方法可以在执行块之前和之后监视内存占用的变化?

memory perl memory-management

7
推荐指数
1
解决办法
602
查看次数

Perl子例程中的变量不会释放内存

我有一个关于子程序中的变量何时以及如何释放内存的问题.该脚本是一个例子:

#!perl/bin/per
use strict;
sub A{
    my $x= shift;
    return ([$x]);
}
for my $i (1..10){
    my $ref= &A($i);## the input changes in each round
    my $ref2= &A(9);## the input is fixed in each round
    print "$ref\t";
    print "$ref2\n";
}
Run Code Online (Sandbox Code Playgroud)

并且屏幕上的输出是:

ARRAY(0x996e98) ARRAY(0x9b50c8)
ARRAY(0x996e98) ARRAY(0x9b50c8)
ARRAY(0x996e98) ARRAY(0x9b50c8)
ARRAY(0x996e98) ARRAY(0x9b50c8)
ARRAY(0x996e98) ARRAY(0x9b50c8)
ARRAY(0x996e98) ARRAY(0x9b50c8)
ARRAY(0x996e98) ARRAY(0x9b50c8)
ARRAY(0x996e98) ARRAY(0x9b50c8)
ARRAY(0x996e98) ARRAY(0x9b50c8)
ARRAY(0x996e98) ARRAY(0x9b50c8)
Run Code Online (Sandbox Code Playgroud)

我预计在子程序A被调用多次时应该更改引用,但无论输入何时更改,输出引用都是固定的.这种现象是否可以推断,在整个脚本结束之前,子程序中变量占用的内存永远不会被释放?否则,我的结果是不寻常的?

perl subroutine

4
推荐指数
1
解决办法
117
查看次数

标签 统计

perl ×2

memory ×1

memory-management ×1

subroutine ×1