[Python-ideas] cross platform memory usage high water mark for improved gc?

Adam Olsen rhamph at gmail.com
Tue Mar 11 21:49:45 CET 2008


On Tue, Mar 11, 2008 at 12:57 PM, Christian Heimes <lists at cheimes.de> wrote:
> Aaron Watters wrote:
>  > It would be nice if the threshold would adjust based
>  > on the performance characteristics of the app.
>  > In particular it'd be nice if the garbage collector would
>  > notice when it's never finding anything and wait longer
>  > everytime it finds nothing for the next collection attempt.
>
>  Have you read the code and comments in Modules/gcmodule.c? The cyclic GC
>  has three generations. A gc sweep for the highest generation is started
>  every 70,000 instructions. You can tune the levels for the generations
>  yourself through the gc module set threshold function.

Not instructions.  There's a counter that's incremented on allocation
and decremented on deallocation.  Each time it hits 700 it triggers a
collection.  The collections are normally only gen0, but after 10 it
does a gen1 collection.  After 10 of the second generation it does the
gen2 (ie a full collection.)

Although, given the way the math is done, I think the 701st object
will be the one that triggers the gen0 collection, and the 12th time
that happens it does gen1 instead.  I get a grand total of.. 93233
objects to trigger a gen2 collection.  Not that it matters.

Without more detail information on what the app is doing we can't
seriously attempt to improve the heuristics for it.

-- 
Adam Olsen, aka Rhamphoryncus



More information about the Python-ideas mailing list