[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