Memory management

Michael Hudson mwh21 at cam.ac.uk
Tue Jul 25 16:00:08 EDT 2000


"Larry Whitley" <ldw at us.ibm.com> writes:

> I'm running out of virtual memory on my NT 4.0 system running a longish
> python script.  Python says "memory error" and quits.  NT shows the
> application using 130+ megabytes.  I have 192 megabytes on the system so it
> seems like a rational number.  I suspect that this means that I have a
> memory leak in my code.
> 
> In the outer loop of my code, I create a object of a class I have defined.
> The outer loop reads records from a trace file and hands them to the object
> created for execution.  This first level object creates a number of second
> level objects of a different class while processing the trace file.  When
> the trace file is complete, the outer loop deletes the first level object.
> I am expecting that to cause all of the references held by that object, and
> those of the second level objects is created to go to zero.
> 
> Here's a programmtic description:
[schnipp]
> My question:  How do I get rid of the memory used by o1 and by o1a, o1b, etc
> within o1 when each trace file is processed?

I'm guessing that you have reference cycles; these can be fun to find,
and even more fun to eliminate.  However the code you posted didn't
create any cycles, so either post some more, or go and stare at your
code some (ask Gordon about the "hypnotising bricks" approach...).

It's also possible that Python 2.0 will have a better garbage
collector.

Cheers,
M.

-- 
  Very rough; like estimating the productivity of a welder by the
  amount of acetylene used.         -- Paul Svensson, comp.lang.python
    [on the subject of the measuring programmer productivity by LOC]



More information about the Python-list mailing list