A createElement() - relase() call sequence doesn't release the allocated 
memory. The memory is blocked until the document is released.
--------------------------------------------------------------------------------------------------------------------------------------

                 Key: XERCESC-1692
                 URL: https://issues.apache.org/jira/browse/XERCESC-1692
             Project: Xerces-C++
          Issue Type: Wish
          Components: DOM
    Affects Versions: 2.7.0
         Environment: Windows XP
Mircosoft MSVC 8.0 (Visual Studio 2005)
            Reporter: Luzius Blatter


// We have long jobs over night where DOM documents are manipulated 
// with frequent "AddChild" and "RemoveChild" calls. 
// The documents are released at the end of the jobs.      
//  
// Now we have the problem the the system goes out of memory. 
// The reason is that all memory allocations aren't deallocated before 
// the the document is released.
// 
// My wish is: I would like to release DOM elements with a true memory 
deallocation.
//  
// The following code fragment shows the problem:
//
// Get the DOM implementation
DOMImplementation *pDOMImplementation = 
DOMImplementationRegistry::getDOMImplementation(NULL);

// Create a DOM document 
XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *pDocument = 
pDOMImplementation->createDocument();

// Create and release many DOM elements
int iElement = 0;
while(iElement < 1000000)
{  

  // Create a element:
  DOMElement *pElement = pDocument->createElement(L"A");

  // Release the element:
  pElement->release();

  //Note: Although the orphaned element is now released, the memory  remains 
blocked 
  //      and can't be reused (even not for the next element in the loop!)

  iElement++;
}

// Now we have around 24 MB blocked. 
pDocument->release();
//Note: Now the memory is deallocated and can be reused.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to