[jdom-interest] JDOM and memory
Michael Kay
mike at saxonica.com
Mon Jan 23 08:59:35 PST 2012
On 23/01/2012 16:28, Rolf Lear wrote:
> Hi all.
>
> I have started on this memory optimization, and it is still in early
> stages. There is one API issue though:
>
> The Element API has the two methods:
>
> addContent(Content node)
> addContent(Collection<? extends Content> newContent)
>
> if I make Element implement List<Content> (which is what this
> memory-change will do), then the above two methods become ambiguous because
> Element will be both Content and List<Content>
And that suggests to me that it is a bad idea.
The class hierarchy should reflect "is-a" relationships, it shouldn't be
designed to tweak performance. It's not true that an Element and its
contents are the same thing, therefore it's wrong to treat them as being
the same object. It will only lead to confusion.
You can achieve the memory saving by having Element.getChildren() create
the returned List object dynamically (it doesn't need to copy any data
to achieve this).
> The logical thing to do would be to deprecate addContent(Collection)
I don't think that solves the problem. There will be cases where
existing code fixes up to the wrong method, and ends up adding the
children of an element to a new parent rather than adding the element
itself.
Michael Kay
Saxonica
More information about the jdom-interest
mailing list