What is involved in implementing a Memory Manager for xerces c++?  Is it a
matter of implementing to a specific memory manager interface inside of
xerces c++?  Can you point at some documentation or any information that may
help me to understand what's involved in implementing a memory manager?

I was hoping that there would be a "magic" function like resetDocumentPool()
that would apply to nodes that I could just call to get the memory back.  Do
you know of any other possibilities without going through the process of
implementing a memory manager.  I'm still under the assumption that
implementing the memory manager is non trivial.



-----Original Message-----
From: Gareth Reakes [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, March 02, 2005 10:35 AM
To: xerces-c-dev@xml.apache.org
Subject: Re: Releasing DOMNodes not releasing all of memory

Hey,

        At the moment, the nodes themselves are "reused". When you call
release 
on a node, we keep a pointer to it and just new another one over the top 
of it. However, any memory newed by by the nodes will remain (For 
example, in DOMElement, an attribute list is newed) until the document 
is released. As Jesse points out, if you implemented your own memory 
manager and also deleted the list (and whatever else) in the release 
call then this would work.

Gareth

Jesse Pelton wrote:
> You could presumably do this by implementing your own MemoryManager and 
> specifying it when you call createDocument(), createDOMBuilder(), or 
> whatever you use to create the document. I believe that your 
> implementation can manage memory in whatever manner it sees fit, 
> including releasing memory back to the OS every time something is 
> deleted. Not that this would be a great idea; it's generally quite 
> expensive, which is part of the reason heap managers exist. You're more 
> likely to want to implement some sort of block recycling scheme. The 
> simplest way to do this is probably to just call the standard C 
> library's malloc() and free() (assuming they're well implemented on your 
> target platform(s)).
> 
>
------------------------------------------------------------------------
>     *From:* Mouawad, Tony [mailto:[EMAIL PROTECTED]
>     *Sent:* Wednesday, March 02, 2005 9:58 AM
>     *To:* 'xerces-c-dev@xml.apache.org'
>     *Subject:* Releasing DOMNodes not releasing all of memory
> 
>     Hello,
> 
>      
> 
>     We're currently faced with a challenge where when we create
>     DOMNodes, use them and then release them, our application memory
>     keeps growing with each DOMNode created and released.  In order to
>     free up the memory consumed with by several iterations of creating
>     and releasing DOMNodes, we have to actually release the document
>     associated with the nodes to regain that memory.  This is sensible,
>     except for the fact that we designed ourselves into a situation
>     where we cannot release the associated DOMDocument until the
>     application is terminated.  This is partly because of how we are
>     using a XML C++ code generator to bind generic C++ objects to XML
data.
> 
>      
> 
>     My current understanding with versions of Xerces C++ including the
>     most current version is that creating and releasing DOMNodes in a
>     DOMDocument consumes memory and will keep consuming memory until the
>     document is released.  Is this true?
> 
>      
> 
>     Can someone recommend a way of releasing the consumed memory without
>     actually releasing the document? 
> 
>      
> 
>     If this question is not relevant to this particular mail group, can
>     someone point me in the right direction?
> 
>      
> 
>     Thank you,
> 
>     Tony
> 
>      
> 

-- 
Gareth Reakes, Managing Director      Parthenon Computing
+44-1865-811184                  http://www.parthcomp.com

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

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

Reply via email to