[Bioperl-l] Memory leak in Bio::Root::Root?
muratem at eng.uah.edu
Tue Dec 13 11:32:32 EST 2005
I have a problem that surpasses what I know and what I've been able to
glean from perltoot,perboot,etc. Maybe it's a question for a perl list,
but here goes...
I was given a package that calculates some statistics regarding base
repeats in a sequence. It inherits from Bio::Root::Root presumbably to
obtain the exception behavior bestowed by the class judging from the
perldocs and to enforce that the argument is a PrimarySeq object. It has
two methods which get called thus:
my $polyn = QStat->polyn($seq_obj);
my $nstat = QStat->nmer_stat($seq_obj);
where the returned values are scalar references. The problem is that
script quickly uses up all of the 4GB address space (processing lots of
oligos) and crashes.
I have used Devel::Size to determine the size of these variables and
get 3.8K and 7K. I have tried to undef them at the end of the loop but it
has no effect. I commented out the calls and the problem goes away so the
problem is associated with the QStat object.
The QStat class has a constructor that calls the base constructor:
my $self = $class->SUPER::new(@args);
would this demand a destructor somewhere?
Does calling a method out of a class like this invoke all the class
machinery without creating the object with new?
Can someone with experience deriving from Bio::Root::Root offer some
suggestions on how to get the memory back?
More information about the Bioperl-l