Wierd behavior of gc.collect
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