[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