[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