RE: [Zope-dev] memory leak
In either case, it seems like you shouldn't be using ParsedXML's ExpatBuilder, which is an interface to PyExpat which is made to create ParsedXML's DOM objects. You should be using your own PyExpat interface to parse this information from your XML input, without the overhead of generating a DOM tree that you're just going to throw away. The interface is documented in the XML-SIG topic area on python.org, and our ExpatBuilder should be a good example on how to interface with our PyExpat installation - just don't build the DOM if you don't use it.
Regardless of what you *should* be doing :), or if I'm misreading you, if you aren't keeping references to the DOM objects being created, then they should be reclaimed by the GC, and you do seem to have DOM objects lying around. I'd like to see your code, is it short enough to post? Or you can chuck it into the collector or ParsedXML tracker.
For debugging purporses, I'd suggest simplifying by supplying an XML string directly, rather than from an external server.
I've replaced ParsedXML's ExpatBuilder with the pyXML package and I used the sax parser without modifing the code (except for the import), this is the refcounts results. Class April 12, 2001 11:55 am April 12, 2001 12:00 xml.dom.NodeList.NodeList 2103 3678 +1575 xml.dom.Text.Text 1263 2208 +945 xml.dom.NamedNodeMap.NamedNodeMap 507 885 +378 xml.dom.Element.Element 499 871 +372 xml.dom.Attr.Attr 339 591 +252 xml.dom.DocumentType.DocumentType 7 10 +3 xml.dom.Document.Document 7 10 +3 xml.dom.Document.Document increments by 1 each time an xml is procesed (I tried to add a del doc at the end but it's ineffective). So the problem is not ParsedXML but Zope itself or my bad methods. Regards, - mn
participants (1)
-
Marco Nova