Wierd behavior of gc.collect

Dave Angel davea at davea.name
Tue Mar 19 17:02:27 CET 2013


On 03/19/2013 11:47 AM, Bodhi wrote:
> I have a python process that does some operations and is supposed to release memory after those. The issue is that memory is not released (as seen through top). So I do a gc.collect() to see if there is any cycle etc. Immediately after doing the collect memory usage drops as expected, but strangely gc.collect() returns 0.
> This means I cannot find out what the problem is by setting the debug option on gc which is what I usually do to figure out issues like this.
>
> Maybe its that my understanding about it is incorrect, but if gc.collect returned 0, how come some memory was freed?
>

To put it simply, top won't in general show you that things are freed. 
The C libraries for malloc and free will reuse the memory, but not 
usually release it to the operating system.  So it's not usually going 
to show up in 'top.'

There was a long thread on this quite recently, but I can't seem to find 
it right now.


-- 
DaveA



More information about the Python-list mailing list