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.


More information about the Python-list mailing list