我在这段代码中遇到了内存泄漏(我认为):
if (ref($init{'time-layout'}) eq 'HASH') {
my %time= % {$init{'time-layout'}};
my @times= @ {$time{'start-valid-time'}};
if (ref($init{parameters}) eq 'HASH') {
%param= % {$init{parameters}};
if (ref($param{'wind-speed'}) eq 'HASH') {
%wind= % {$param{'wind-speed'}};
@windvalue= @ {$wind{value}};
%temp= % {$param{'temperature'}};
@tempvalue = @ {$temp{value}};
%wdir= % {$param{'direction'}};
@wdirvalue = @ {$wdir{value}};
%hum= % {$param{'humidity'}};
@humvalue = @ {$hum{value}};
undef %wind;
undef %temp;
undef %wdir;
undef %hum;}
undef %param;}
这是来自一个 sub,输入来自XMLin()(来自XML::Simple)。具体来说,输入是(如果重要的话)
http://graphical.weather.gov/xml/sample_products/browser_interface/ndfdXMLclient.php? lat=$lat&lon=$lon&product=time-series&begin=2004-01-01T00:00:00&end=2013-04-20T00:00:00&temp=temp&wspd=wspd&rh=rh&wdir=wdir";
where$lat
和$lon
是纬度和经度。
代码需要几个小时才能运行将数据插入 SQL 服务器,而且在完成之前,Perl 实例占用了几 GB 或更多的 RAM。我确信这对某人来说很简单,但我充其量只是 Perl 的新手。