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]