Java Mailing List Archive

Home » JDOM Projects »

[jdom-interest] JDOM and memory

Rolf Lear


Replies: Find Java Web Hosting

Author LoginPost Reply
Hi all.

Memory optimization has never been a top priority for JDOM. At the same
time, for what it does, JDOM is not a 'terrible' memory user. Still, I
have done some analysis, and, I believe I can trim about a quarter to a
half of 'JDOM Overhead' memory usage by making two 'simple' changes....

The first is to merge the ContentList class in to the Element class (and
also in to Document). This will reduce the number of Java objects by
about half, and that will save about 32 bytes per Element at a minimum
in a 64-bit JRE. Additionally, by lazy-initialization of the Content
array, we can save memory on otherwise 'empty' Elements.

This can be done by extending the Element (and perhaps Document) class
to extend 'List'. It can all be done in a 'backward compatible' way, but
also leads to some interesting possibilities, like:

 for (Content c : element) {
   ... do something

(for backward compatibility, Element.getContent() will return 'this').

The second change is to make the AttributeList instance in Element a
lazy-initialization. This would save memory on all Elements that have no
attributes, but would have an impact for people who sub-class the
Element class and may expect the attributes field to be non-null.

I am trying to get a feel for how important this sort of optimization
may be. If there is interest then I will make some changes, and test the
impact. I may make a separate branch in github to test it out....

If the above changes are unrealistic then I don't think it makes sense
to even try....

To control your jdom-interest membership:
©2008 - Jax Systems, LLC, U.S.A.