[jdom-interest] JDOM parser reuse memory problem
Rolf Lear
jdom at tuis.net
Thu Nov 17 08:33:40 PST 2011
On 17/11/2011 11:25 AM, BIHANIC Laurent wrote:
> Hi
>
> Le 17/11/11 17:01, Rolf Lear a écrit :
>> In a more generalized answer, the only issue I can see with having a pool of
>> SAXBuilders is that, if you reuse parsers, you will 'carry' the most recently
>> parsed document from each SAXBuilder until that builder is used again.
> It should not: the reference to the (being) built document is held by
> SAXHander and the reference to SAXHandler (contentHandler) is explicitely set
> to null at the end of the build() method in a finally clause.
>
> We did this because, in the past, we encountered some JVMs that were reluctant
> to garbage-collect the SAXHandler otherwise.
>
> Regards,
>
> Laurent
>
>
Hi Laurent.
Yeah, the code in the method indicates that (I was not aware it was you
who put that in).
There is a bug though, and it could explain some confusion.
The problem is the the XMLReader has had it's various handlers set to
the SAXHandler (Content, DTD, Error, etc.) and when you re-use the
XMLReader, you in effect keep a reference to the SAXHandler.
Setting the SAXHandler to null at the end of the build does not cause
the XMLReader to forget it's handlers.
It is an issue that Randall identified a week or so ago.
Rolf
More information about the jdom-interest
mailing list