Python 2.4.3 array memory leak

danmcleran at yahoo.com danmcleran at yahoo.com
Thu May 7 23:47:01 CEST 2009


On May 7, 3:31 pm, "danmcle... at yahoo.com" <danmcle... at yahoo.com>
wrote:
> I am using the array module to instantiate many arrays in my
> application. It seems like there is a memory leak in there somewhere.
> Can anyone confim this and let me know what, if anything, I can do
> about it? I am using Fedora Core 5 Linux:
>
> import commands
> import array
> import itertools
> import sys
>
> from itertools import repeat
>
> print '*** before ***'
> print commands.getoutput('cat /proc/meminfo').split('\n')[1]
> for i in range(100):
>     a = array.array('I', repeat(0, int(2E6)))
>     del a
> print '*** after ***'
> print commands.getoutput('cat /proc/meminfo').split('\n')[1]
>
> Output:
> *** before ***
> MemFree:       1459772 kB
> *** after ***
> MemFree:       1457688 kB

I hate to reply to my own thread but I wanted to update it. I tried
the same code using ctypes arrays and see no memory leak:

import commands
import array
import itertools
import sys
import ctypes

from itertools import repeat
from ctypes import *

print '*** before ***'
print commands.getoutput('cat /proc/meminfo').split('\n')[1]
for i in range(100):
    a = ARRAY(c_uint, int(2E6))
    del a
print '*** after ***'
print commands.getoutput('cat /proc/meminfo').split('\n')[1]

*** before ***
MemFree:       1416364 kB
*** after ***
MemFree:       1416364 kB



More information about the Python-list mailing list