in reply to Memory Management and Array references

You can avoid an extra refcount on @array by either wrapping it in in a narrow scope
{ my @array = ....; push (@{$self->{files}}, \@array); }
but this is unlikely to be the source of your problem. Can you produce a complete but stripped down bit of code that reproduces this problem? Then we could run it on our own machines and advise you better. ie something that just initialises the array, then calls next repeatedly.

Replies are listed 'Best First'.
Re: Re: Memory Management and Array references
by crabbdean (Pilgrim) on May 25, 2004 at 13:14 UTC
    Thanks Dave, although the @array is already in a small scope (the "next" iterator). The problem is the reference of @array that is pushed to a global array $self->{files}. The refcount made by that means @array sticks around until $self is destroy, that is IF garbage collection is even able to find and delete all references, which I doubt. Run that over a terrabyte server and I think this is my problem.

    Heading to bed now but I'll post some working code for you to test tomorrow. Note though, my included link Re: Streaming to Handles (iterator) contains pretty much the "guts" of the code except for the few extra lines I posted in my example.

    Dean
    The Funkster of Mirth
    Programming these days takes more than a lone avenger with a compiler. - sam
    RFC1149: A Standard for the Transmission of IP Datagrams on Avian Carriers