[Twisted-Python] debugging a memory leak

lasizoillo lasizoillo at gmail.com
Sat Feb 20 01:56:44 EST 2010


2010/2/20 Alec Matusis <matusis at yahoo.com>:
> Thank you Werner!
>
> I am playing with your object counter. But before I can interpret the
> results, I have to ask a possibly stupid question.
> Can someone explain to me this behavior of python 2.6 on x86 linux 2.6.24:
>
> 1) start interpreter
> Check the size of the interpreter process:
> $ps -orss -p24316
>  RSS
>  4212
>
> Size is 4MB, fine.
>
> 2) Allocate a huge chunk of memory:
>>>> x=range(1,10000000)
> Check the size of the interpreter process:
> $ps -orss -p24316
>  RSS
>  322460
>
> The RSS memory grew by 322460KB =314MB, as I expected
>
> 3) Delete this object:
>>>> del x
> Check the size of the interpreter process:
> $ps -orss -p24316
>  RSS
>  244332
>
> So, the memory is far off its original value! It's up by nearly 240MB, and
> it never gets released. Why is that?
>
> 4)
>>>> import gc
>>>> gc.collect()
> 0
> $ps -orss -p24316
>  RSS
> 244404
> Not much luck here!
>
>

Repeat steps 2 to 4. No more memory is used. Python don't leaks more memory.

Repeat the steps reserving memory like this:
x = [0] * 10000000

The memory is cleaned. The problem is in the virtual machine use of integers.

Excuse my poor explanation. My english is very bad,

Reggards,

Javi



More information about the Twisted-Python mailing list