Python memory usage

David Cournapeau cournape at gmail.com
Wed Oct 29 10:53:58 EDT 2008


On Wed, Oct 29, 2008 at 6:56 PM, petercable at gmail.com
<petercable at gmail.com> wrote:
> On Oct 21, 5:19 pm, Rolf Wester <rolf.wes... at ilt.fraunhofer.de> wrote:
>> Hi,
>>
>> I have the problem that with long running Python scripts (many loops)
>> memory consumption increases until the script crashes. I used the
>> following small script to understand what might happen:
>>
> <snip>
>
> AFAIK, python uses malloc behind the scenes to allocate memory. From
> the malloc man page...
>
> "The  malloc() and free() functions provide a simple, general-purpose
> memory allocation package. The malloc() function returns a pointer to
> a block of at least size bytes suitably aligned for any use. If the
> space assigned by malloc() is overrun, the results are undefined.
>
> The argument to free() is a pointer to a block previously allocated by
> malloc(), calloc(), or realloc(). After free() is executed, this space
> is made available for further  allocation by the application, though
> not returned to the system. Memory is returned to the system only
> upon  termination of  the  application.  If ptr is a null pointer, no
> action occurs. If a random number is passed to free(), the results are
> undefined."

Depending on your malloc implementation, that may not be true. IN
particular, with glibc, bit allocations are done with mmap, and those
areas are unmaped when free is called; any such area is immediatly
returned to the system

http://www.gnu.org/software/libtool/manual/libc/Malloc-Tunable-Parameters.html#Malloc-Tunable-Parameters

David



More information about the Python-list mailing list