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]