we’ve been using the mobile DB for more than a year during the development phase of our product. Now resource usage has become a big issue since our client application can use up to 500MB of memory within half an hour of usage.
I saw in the API JavaDoc that there is a release() method which should be used on all instances of BirdstepUnknown. Even though it is not stated in the documentation, all DOM objects (Document, Element, Node, …) also implement this interface.
Does it mean that all objects returned by any of the DOM API methods should be freed to avoid resource usage during runtime? I know the memory gets freed up when the database gets closed, but the client will be used all day long.
Also, Elements will be serialized using the XMLSerializer from Xerces. This code is not under our control but I assume that it also uses DOM methods for getting references to Elements and attributes.
How should all of this be handled?
The serialization should be done from BdXML object. One should not use Xerces for serialization. Xerces has its own implementation with memory model, this could be the reason for the hight memory usage.