in reply to Simple Program Huge Problem

It seems the DESTROY method doesn't quite work as advertised in this case (i.e. it doesn't destroy all circular references). If you use Data::Dumper; and write

print Dumper $tree; $tree->DESTROY(); #clear circular references print Dumper $tree; <STDIN>;

you can compare the dump before and after the DESTROY call. You'll notice that the _parent attribute of the first-level child nodes has been set to undef, but not those of the children further down in the tree...

Anyway, as the module also allows for weak references to be used, you could also simply write

use Tree::Simple 'use_weak_refs';

...and be happy :) — Just tried it, no memory leaks any longer.

Replies are listed 'Best First'.
Re^2: Simple Program Huge Problem
by crusher (Acolyte) on Nov 06, 2008 at 00:04 UTC
    I really appreciated your answer,
    Thank you very much!!

    Although the memory usage still increases it’s nothing compared with the situation before “use_weak_refs”. I’ll try to investigate further with the method that you showed.

      I usually avoid posting Perl-free nodes like this one... but in this case, I'd just like to say a quick thanks in reverse.  It's always a pleasure to have self-contained code that I can just cut-n-paste and run. That makes me far more inclined to try to replicate the problem and look for a solution... — Thanks, and good luck with finding the remaining leaks!