Python memory handling
Nick Craig-Wood
nick at craig-wood.com
Fri Jun 1 07:30:04 EDT 2007
Andrew MacIntyre <andymac at bullseye.apana.org.au> wrote:
> You should also appreciate something about PyMalloc: it only handles
> allocation requests of 256 bytes or smaller, and this limitation is part
> of PyMalloc's design.
>
> If most of your allocations are >256 bytes, you're at the mercy of the
> platform malloc
You can tweak this if you are using libc (eg under linux) at least :-
http://www.gnu.org/software/libc/manual/html_node/Malloc-Tunable-Parameters.html
Setting M_MMAP_THRESHOLD should result in blocks that are perfectly
free()able back to the OS if allocated with malloc(). By default this
is 128k I think so you can set it to 4k and it should help a lot.
Note that a mmap block is a minimum of 4k (under x86 - one OS page
anyway) so set this too small and you program will use a *lot* of
memory, but only temporarily ;-)
If PyMalloc stretched up to 4k and M_MMAP_THRESHOLD was set to 4k then
you'd have the perfect memory allocator...
--
Nick Craig-Wood <nick at craig-wood.com> -- http://www.craig-wood.com/nick
More information about the Python-list
mailing list