[Bioperl-l] Possible memory leak in
Bio::SeqFeature::Gene::GeneStructure?
Stefan Kirov
skirov at utk.edu
Wed Mar 30 12:25:26 EST 2005
Oops, actually Bio::SeqFeature::Gene::Transcript::parent does not allow
as it is undef.... Either should be fixed ot DESTROY needs to directly
undef $transcript->{parent}.
Hilmar Lapp wrote:
> Those modules probably can use some serious review. If there is a
> cycle then Jason should be on the right path with overriding DESTROY,
> but first one would need to know where the cycle is. I don't recall
> one being there on purpose ...
>
> Sorry to not be of more help ...
>
> -hilmar
>
> On Tuesday, March 29, 2005, at 01:14 PM, Stefan Kirov wrote:
>
>> I am working on the Entrezgene parser and tried to use
>> Bio::SeqFeature::Gene::GeneStructure to describe NC/NT to NM and NP
>> relationships. I am pretty much done with the parser (based on Mingyi
>> Liu low lovel parser), but once I tried to parse a whole file (Homo
>> sapiens) I ran out of memory. I think the problem might be
>> Bio::SeqFeature::Gene::GeneStructure::add_Transcript.
>> Here is the code which I used to simulate the problem and the
>> resulting report file. It seams adding Bio::SeqFeature::Gene::Exon to
>> Bio::SeqFeature::Gene::Transcript do not contribute to the problem.
>> Any suggestions?
>> Stefan
>> Simulation 2 0MB
>> Simulation 3 1MB
>> Simulation 4 1MB
>> Simulation 5 1MB
>> Simulation 6 2MB
>> Simulation 7 2MB
>> Simulation 8 2MB
>> Simulation 9 2MB
>> Simulation 10 3MB
>> Simulation 11 3MB
>> Simulation 12 3MB
>> Simulation 13 4MB
>> Simulation 14 4MB
>> Simulation 15 4MB
>> Simulation 16 5MB
>> Simulation 17 5MB
>> Simulation 18 5MB
>> Simulation 19 5MB
>> Simulation 20 6MB
>> Simulation 21 6MB
>> Simulation 22 6MB
>> Simulation 23 7MB
>> Simulation 24 7MB
>> Simulation 25 7MB
>> Simulation 26 8MB
>> Simulation 27 8MB
>> Simulation 28 8MB
>> Simulation 29 9MB
>> Simulation 30 9MB
>> Simulation 31 9MB
>> Simulation 32 9MB
>> Simulation 33 10MB
>> Simulation 34 10MB
>> Simulation 35 10MB
>> Simulation 36 11MB
>> Simulation 37 11MB
>> Simulation 38 11MB
>> Simulation 39 12MB
>> Simulation 40 12MB
>> Simulation 41 12MB
>> Simulation 42 13MB
>> Simulation 43 13MB
>> Simulation 44 13MB
>> Simulation 45 13MB
>> Simulation 46 14MB
>> Simulation 47 14MB
>> Simulation 48 14MB
>> Simulation 49 15MB
>> Simulation 50 15MB
>> Simulation 51 15MB
>> Simulation 52 16MB
>> Simulation 53 16MB
>> Simulation 54 16MB
>> Simulation 55 16MB
>> Simulation 56 17MB
>> Simulation 57 17MB
>> Simulation 58 17MB
>> Simulation 59 18MB
>> Simulation 60 18MB
>> Simulation 61 18MB
>> Simulation 62 19MB
>> Simulation 63 19MB
>> Simulation 64 19MB
>> Simulation 65 19MB
>> Simulation 66 20MB
>> Simulation 67 20MB
>> Simulation 68 20MB
>> Simulation 69 21MB
>> Simulation 70 21MB
>> Simulation 71 21MB
>> Simulation 72 22MB
>> Simulation 73 22MB
>> Simulation 74 22MB
>> Simulation 75 23MB
>> Simulation 76 23MB
>> Simulation 77 23MB
>> Simulation 78 24MB
>> Simulation 79 24MB
>> Simulation 80 24MB
>> Simulation 81 24MB
>> Simulation 82 25MB
>> Simulation 83 25MB
>> Simulation 84 25MB
>> Simulation 85 26MB
>> Simulation 86 26MB
>> Simulation 87 26MB
>> Simulation 88 27MB
>> Simulation 89 27MB
>> Simulation 90 27MB
>> Simulation 91 27MB
>> Simulation 92 28MB
>> Simulation 93 28MB
>> Simulation 94 28MB
>> Simulation 95 29MB
>> Simulation 96 29MB
>> Simulation 97 29MB
>> Simulation 98 30MB
>> Simulation 99 30MB
>> Simulation 100 30MB
>> 6620 6650
>> use Bio::SeqFeature::Gene::Exon;
>> use Bio::SeqFeature::Gene::Transcript;
>> use Bio::SeqFeature::Gene::GeneStructure;
>> use strict;
>> use Devel::Cycle;
>>
>> my ($prevmem,$growth,$first);
>> for my $k (1..100) {
>> open (FREE, "free -m|");
>> my $buf=<FREE>;
>> my $buf=<FREE>;
>> my ($x1,$x2,$mem,$x3)=split(/\s+/,$buf,4);
>> if ($prevmem) {
>> $growth+= $mem-$prevmem;
>> print "Simulation $k\t$growth","MB\n";
>> }
>> else { $first=$mem;}
>> $prevmem=$mem;
>> for my $i (1..20) {
>> my $gstruct=new Bio::SeqFeature::Gene::GeneStructure;
>> for my $n (0..3) {
>> my $transcript=new
>> Bio::SeqFeature::Gene::Transcript(-primary=>'memleak'.$n,
>>
>> -start=>1,-end=>2000,-strand=>, -desc=>'test for memmory leaks');
>>
>>
>> foreach my $e (1.10) {
>> my $exonobj=new
>> Bio::SeqFeature::Gene::Exon(-start=>$e*10,-end=>$e*10+9,-strand=>1);
>> $transcript->add_exon($exonobj);
>> }
>> $gstruct->add_transcript($transcript);
>> }
>> }
>> }
>> print
>> "$first\t$prevmem\n";_______________________________________________
>> Bioperl-l mailing list
>> Bioperl-l at portal.open-bio.org
>> http://portal.open-bio.org/mailman/listinfo/bioperl-l
>
--
Stefan Kirov, Ph.D.
University of Tennessee/Oak Ridge National Laboratory
5700 bldg, PO BOX 2008 MS6164
Oak Ridge TN 37831-6164
USA
tel +865 576 5120
fax +865-576-5332
e-mail: skirov at utk.edu
sao at ornl.gov
"And the wars go on with brainwashed pride
For the love of God and our human rights
And all these things are swept aside"
More information about the Bioperl-l
mailing list