Thanx for your reply, your help is greatly appreciated

Mike

On 25/12/06, David Bertoni <[EMAIL PROTECTED]> wrote:

John Doe wrote:
> Hi, this is the second time I send this message, sorry for that, its
just
> that I am not sure it got sent
> the first time, since I didn't receive any responces.
>
> I have the following simple code, using xerces running on my windows.
> This demo compiles and runs normally, but when I open my Task Manager,
> I see a constant memory growth of my process, and I dont understand
> why.
>
> //***********************************************
> XMLPlatformUtils::Initialize();
> DOMImplementation impl =
> DOMImplementationRegistry::getDOMImplementation(...);
> DOMDocument* doc1 = impl->createDocument(...);
> DOMDocument* doc2 = impl->createDocument(...);
> DOMElement* elem1 = doc1->createElement(...);
> DOMElement* elem2 = doc2->createElement(...);
>
> // get elem2 to be realy big element, so that memory leak will be more
> visible
> DOMElement* tmp = doc2->createElement(...);
> for(int i=0; i<50; i++)
> {
>  elem2->appendChild(tmp);
> }
>
> DOMNode* node;
> while(true)
> {
> // thread sleep for 20 msec
> Sleep(20);
> node = doc1->importNode(elem2, true);
> node->release();
> }
>
> //****************************************************
> I understand that importNode() actualy clones the original node, but
> release() is supposed to free it, and it seems that it doesn't happen.
> What is wrong here? please help.

There was a long discussion about this just a few weeks ago:

http://marc.theaimsgroup.com/?l=xerces-c-dev&m=116592343116092&w=2

The bottom line is that you will need to release the parent DOMDocument
instance to recover all of the memory.

Also, it looks like you're using one DOMDocument instance as a factory,
creating a large tree, then importing that entire tree into another
document.  You might want to consider re-factoring your code so you always
create the new nodes in the document that's the final destination of the
nodes, since that is much more efficient.

Dave

Reply via email to