[ZODB-Dev] Extenuated memory

Tim Peters tim.peters at gmail.com
Thu Mar 23 15:02:19 EST 2006


[Antonio Beamud Montero]
> Well, now I can minimize the cache and get the next values (an unclosed
> connection fixed):
> [['BTrees.OOBTree.OOBTree', 3], ['Persistence.PersistentMapping', 6],
> ['request.Request', 14],  ['status.Status', 3]]
>
> But my server doesn't free any memory, now it uses 55Mb of resident
> size... How I can debug this "references"?

Many layers are involved in memory management, from ZODB through
Python down to your platform C's malloc/free implementation and ending
in your OS kernel  Unless you become knowledgable about all of them
(and vital details vary wildly across specific platform C and OS
versions), chances are decent you'll never find a correct answer.

A simple thing to _try_ is compiling with Python 2.5a1 when it comes
out (in a few weeks).    One of Python's (many) memory subsystems
never returned large blobs of memory to the platform C free() before
2.5a1, and _may_ return such blobs in 2.5a1, thanks to changes derived
from this patch:

    http://www.python.org/sf/1123430

That may or may not reduce your app's memory use.  Note that even if
Python does return more memory to the platform C free(), there's no
guarantee that free() will in turn return such memory to the OS; and
even if free() does return it to the OS, there's no guarantee that the
OS will reduce the process VM reservation; etc.  The easiest-- & only
sure --way to find out whether it helps your app using your platform C
and your OS is to try it.


More information about the ZODB-Dev mailing list