Set x to to None and del x doesn't release memory in python 2.7.1 (HPUX 11.23, ia64)

Terry Reedy tjreedy at udel.edu
Wed Mar 6 05:59:57 EST 2013


On 3/6/2013 5:11 AM, Wong Wah Meng-R32813 wrote:
> Hello there,
>
> I am using python 2.7.1 built on HP-11.23 a Itanium 64 bit box.
>
> I discovered following behavior whereby the python process doesn't
> seem to release memory utilized even after a variable is set to None,
> and "deleted". I use glance tool to monitor the memory utilized by
> this process. Obviously after the for loop is executed, the memory
> used by this process has hiked to a few MB. However, after "del" is
> executed to both I and str variables, the memory of that process
> still stays at where it was.

Whether memory freed by deleting an object is returned to and taken by 
the OS depends on the OS and other factors like like the size and layout 
of the freed memory, probably the history of memory use, and for 
CPython, the C compiler's malloc/free implementation. At various times, 
the Python memory handlers have been rewritten to encourage/facilitate 
memory return, but Python cannot control the process.

> for i in range(100000L):
>      str=str+"%s"%(i,)
> i=None; str=None   # not necessary
 > del i; del str

Reusing built-in names for unrelated purposes is generally a bad idea, 
although the final deletion does restore access to the builtin.

-- 
Terry Jan Reedy




More information about the Python-list mailing list