A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2008-June/080582.html below:

[Python-Dev] Another Proposal: Run GC less often

[Python-Dev] Another Proposal: Run GC less oftennone ralfs72 at googlemail.com
Sat Jun 21 23:28:22 CEST 2008
Instead of collecting objects after a fixed number of allocations (700) 
You could make it dynamic like this:

# initial values
min_allocated_memory = 0
max_allocated_memory = 0
next_gc_run = 1024 * 1024

def manage_memory():
     allocated_memory = get_allocated_memory()
     min_allocated_memory = min(min_allocated_memory, allocated_memory)
     max_allocated_memory = max(max_allocated_memory, allocated_memory)

     if max_allocated_memory - min_allocated_memory > next_gc_run:
         # run the gc
         memory_freed, allocated_memory = run_gc()
         next_gc_run = max(
         	allocated_memory * 1.5 - memory_freed, 1024 * 1024
     	)
         min_allocated_memory = allocated_memory
         max_allocated_memory = allocated_memory


manage_memory() should be called after every allocation and after a ref 
count of an object reaches 0 (memory is freed)


Expected behaviours:

=> As less objects contain cyclic references as less often the GC will 
run (memory_freed is small)

=> As more objects contain cyclic references as more often the GC will 
run (memory_freed is large)

=> If memory utiliaziation grows fast (burst allocations) GC will run 
less often: next_gc_run = allocated_memory * 1.5 - memory_freed

... Of course the constants: 1.5 and 1024 * 1024 are only suggestions...

- Ralf
More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4