[Chicago-talk] linked list of object
Steven Lembark
lembark at wrkhors.com
Fri Nov 11 10:36:32 PST 2005
-- Andy_Bach at wiwb.uscourts.gov
> Hey.
>
> Our main program uses a linked list of objects and passes around global
> pointers to the head of the list. They often walk the chain by:
> my $LocalList = $main::gListPtr;
>
> while ($LocalList) {
> ....
> $LocalList = $LocalList->next();
> }
>
> (yes, the next() method returns the next object). Just looking at some
> code where they undef() the global pointer before appending a new list
> and got to wondering if GC would be then able to recover the 'orphaned'
> objects. The first on the list won't have an refs so it can go and so
> the 2nd ... etc. Just wondering if this *not* a good idea or what a way
> to examine the memory overhead.
This breaks if you use doubly-linked lists; which can
be fixed by weakening the references.
You might want to weaken the links sent out to sub-calls
and keep the list-head alive in a struct in the creating
class or its client. That saves you from having problems
with metadata keeping the objects alive accidentally.
A leak test basically creates and tears down a million
object links and asks if the amout of memory in use
afterwards is different than at the start. There are
good memory leak tests in XML::LibXML and DBD::mysql
if you want examples.
--
Steven Lembark 85-09 90th Street
Workhorse Computing Woodhaven, NY 11421
lembark at wrkhors.com 1 888 359 3508
More information about the Chicago-talk
mailing list