[pm-h] When to use "weaken"?

Michael R. Davis mrdvt92 at yahoo.com
Thu Jan 23 20:30:16 PST 2014


G. Wade,
 
>> My issue is that I have a memory leak
>> I think it's in a statement like this.
>>  
>> my $profile=XXX::Profiles::Profile->new(name=>$name, parent=>$self);
>> 
>> where it is important for the child object to know who's it's parent
>> is.  But, I guess the garbage collector is not cleaning this up when
>> both the parent and child go out of scope. I don't think this is a
>> "circular" reference (I called it a tree; like family tree) but it's
>
> If I'm understanding you, that's the definition of a circular reference.
>
>     parent -> child -> parent

Yep, that's exactly what I have.  I guess this Engineer needs to study up on 
that computer science lingo.
 
>
> In this case, the parent owns the child and the child owns the parent.
>You should weaken the child's reference to the parent (because the
> child doesn't own the parent.)
> 
> I would do the weaken in the the child. You are passing the parent
> reference to the child. The child knows that it doesn't need to own the
> parent reference, so the child should weaken the reference.
 
I will try weakening in the children.  
 
>> It also bothers me that Fedora appears to not get all of the memory
>> back after the Perl process terminates.  Is that common? 

> How are you determining whether Fedora "gets all of the memory back"?

`top -c` then "<" to sort by memory.
 
This appears to be this bug.  So, unrelated but hurts just the same.
 
https://bugzilla.redhat.com/show_bug.cgi?id=473547
Bug 473547 - console-kit-daemon huge memory allocation 
 
Thanks,
Mike
 
mrdvt92


More information about the Houston mailing list