Perl脚本的内存使用情况

时间:2012-03-30 05:54:33

标签: perl

我有一个Perl脚本,使用DBI从MySQL获取类似http://1.1.1.1/1.jpg的url,并使用LWP :: Simple下载这个jpg文件。这是一个无限循环。

while (1) {
    my $url=&fetch_url_from_mysql;
    if ($url){        
        &download_jpg($url);
    } else {
        sleep 1;
    }
}

简单明了。我想内存使用量会保持一定的数量。但经过一个月的连续运行这个脚本。内存使用量为7.5G!

我如何描述它?

1 个答案:

答案 0 :(得分:1)

对于分析,设置explitict退出。创建一个计数器,如果迭代次数等于或大于此值,则退出程序。

要进行性能分析,请使用NYTprof:

perl -d:NYTProf script.pl nytprofhtml

但是你在这里处理内存泄漏。

阅读此内容以查找内存泄漏:How can I find memory leaks in long-running Perl program?

很可能你有一个永远不会被释放的变量。如果变量超出范围,Perl会释放内存,但是其中一个变量永远不会超出范围。

使用$ variable = undef释放内存。

如果您移植整个脚本,我们可能会发现它有泄漏。

的问候,