[jdom-interest] JDOM parser reuse memory problem
Randall Theobald
randallt at us.ibm.com
Thu Nov 10 09:24:32 PST 2011
Hi, I'm a performance analyst and found a spot where a product I'm
analyzing is using JDOM. We are creating new SAXBuilders on each thread and
are ending up with a hot lock on the classloader when trying to load up the
XMLReader. I saw that the underlying parser in SAXBuilder can be reused,
thus leading to a proper pooling strategy, but I have a memory concern. In
the case where the parser is reused, nothing is cleared from it at the end
of the build method (so the content handler is still held, which can
reference lots of objects). Since SAXBuilder doesn't expose a way to clear
anything on the reused parser, the only option is using ugly reflection to
clear it, or to use (slightly less ugly) WeakReferences to the SAXBuilders
in my pool so that they evenutally get cleaned up.
Is there a reason that the content handler on 'this.parser' isn't set to
null along with the local content handler being set to null in the finally
block of the build method? If not, I'd suggest this change.
Randall Theobald
Performance: WebSphere
Business Process
Management &
Connectivity
IBM Software Group randallt at us.ibm.com
Austin, TX 512-286-8870 t/l:
363-8870
More information about the jdom-interest
mailing list