On Wed, Sep 04, 2002 at 05:07:41PM +0100, Jeff AA wrote:
> > 
> >     It could be garbage collection, but it shouldn't take 2 minutes to
> >     free() 700MBs of data. Could be that your code is written in such 
> >     a way that it is having to back out of lots of subroutines and
> >     free'ing things as it goes? Such as with recursion? 
> 
> no recursion, and only a few levels deep. the pause happens at the
> topmost level on the exit statement.
> 
> > 
> >     Is this 700MBs in one data segment ( i.e. a single hash, array, 
> >     etc ) or thousands of little ones?  
> > 
> >     I could imagine a situation where if you had thousands of little
> >     variables which are local to some subroutines that are traversed
> >     recursively it might take Perl that long to back out all 
> > of the way 
> >     free()'ing as it goes. 
> 
> most of the memory is in a few large hashes [3 hashes of approx 200M
> each]. Each hash element in these large hashes is itself a hash with
> about 70 name/value pairs. The data on each smaller hash is about 4K
> data. The smaller hashes all have an identical set of keys.

You could try calling POSIX::_exit() instead of exit, but beware that
this won't do nice things like flush your IO.

-- 
Paul Johnson - [EMAIL PROTECTED]
http://www.pjcj.net

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to