http://qs321.pair.com?node_id=405911

2ge has asked for the wisdom of the Perl Monks concerning the following question:

Hi monks!

I am playing with Parallel::ForkManager, but I have one interesting question. When I run script bellow it uses too much memory - it seems to me, that child thread doesn't free all memory it used. On 100th iteration it uses around 18MB, after 200th it uses around 29MB! Could anyone explain me why is that, and where is error in my script ? If I don't use DBI stuff in child threads everything is ok. Is there some dbh destructor, which I'm missing ? I use activestate perl 5.8.4 and latest ForkManager
# this is just example script use strict; use warnings; use Parallel::ForkManager; use DBI; my @links=(1..1000); my $pm=new Parallel::ForkManager(5); foreach my $x (0..$#links) { $pm->start and next; my $dbh = DBI->connect("DBI:mysql:database=customers;host=loca +lhost;port=3306", "root", "") or die "Can't connect: ", $DBI::errstr; $dbh->{RaiseError} = 1; print "$links[$x]\n"; # do something (read, update, insert from db) $dbh->disconnect; $pm->finish; }

Thanks for any help -- Brano