我有一个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!
我如何描述它?
答案 0 :(得分:1)
对于分析,设置explitict退出。创建一个计数器,如果迭代次数等于或大于此值,则退出程序。
要进行性能分析,请使用NYTprof:
perl -d:NYTProf script.pl nytprofhtml
但是你在这里处理内存泄漏。
阅读此内容以查找内存泄漏:How can I find memory leaks in long-running Perl program?
很可能你有一个永远不会被释放的变量。如果变量超出范围,Perl会释放内存,但是其中一个变量永远不会超出范围。
使用$ variable = undef释放内存。
如果您移植整个脚本,我们可能会发现它有泄漏。
的问候,