I fixed the problem, it deem seem to be a memory leak
in rtree/wrapper.cc, in the PyListVisitor class, I changed the visitData
function to the following:
void visitData(const IData & d)
{
PyObject * ob = PyLong_FromLongLong(d.getIdentifier());
PyList_Append(ids, ob);
Py_DECREF(ob);
}
after rebuilding this, I ran the test described in the previous post, and the
memory leak was fixed. I then tested my own application as a correctness test,
and although the running time increased slightly, the output was correct.
- Chris
From: [email protected]
To: [email protected]
Date: Sat, 3 Jan 2009 16:51:19 -0400
Subject: [Community] Possible Rtree 0.4.1 memory leak, Does spatialindex do
query caching?
Running the following python script, which uses Rtree 0.4.1, which uses
spatialindex, after the index is built the repeated queries cause the memory
usage to increase by megabytes a second. This is not a python garbage
collection problem, you can see, the ref count of zxy, and x (results) are both
equal (2), which indicates one reference for the variable, and one reference
for the parameter to the getrefcount function.
from rtree import Rtree
import sys
def y(index):
zxy = [ 1, 2, 3, 4 ]
print "zyx: %d"%(sys.getrefcount(zxy))
x = index.intersection((0.25, 0.25, 0.75, 0.75))
print "x: %d"%(sys.getrefcount(x))
print "x: %d"%(sys.getrefcount(x))
del x[:]
del x
index = Rtree()
for i in range(0, 50000):
index.add(i, (0, 0, 1, 1))
while 1:
y(index)
Thanks,
- Chris
Share your holiday memories for free with Windows LiveT Photos. Get started now.
_________________________________________________________________
Drag n’ drop—Get easy photo sharing with Windows Live™ Photos.
http://www.microsoft.com/windows/windowslive/photos.aspx_______________________________________________
Community mailing list
[email protected]
http://lists.gispython.org/mailman/listinfo/community