On 2009-05-07 16:31, danmcle...@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

This is not necessarily indicative of a memory leak, per se. Python sometimes does not release memory back to the OS. The memory isn't leaked; it will be reused by Python for later allocations. Now, if you saw Python's memory usage *grow* with increasing iterations, then that would be evidence of a leak.

Try measuring the "before" memory, then do one iteration, measure the memory again (let's call it "intermediate"), then do your loop, and then measure the "after" memory. The "intermediate" measurement should be about your "after" measurement.

Also, try to measure the process's own memory usage, not the system's free 
memory.

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
 that is made terrible by our own mad attempt to interpret it as though it had
 an underlying truth."
  -- Umberto Eco

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to