[jdom-interest] JDOM and memory

Rolf Lear jdom at tuis.net
Sat Jan 28 16:49:18 PST 2012

On 28/01/2012 5:31 PM, Michael Kay wrote:
>> In many places 1,000,000 strings is not a lot....
> The Saxon NamePool is optimized for much lower numbers than this: it's
> rare to have more than a couple of thousand element and attribute names.
> The only time I've seen large numbers reached is with pathological
> applications that generate random namespace prefixes.
> Michael Kay
> Saxonica

I addressed this in mail I inadvertently did not send to the list, but 
to Paul only. I corrected that now.

The issue is not so much the content of one document, but the content of 
all data in a JVM. Tomcat is a prime example. Because it uses a separate 
Classloader for each installed application, it has many multiples of 
copies of classes in the perm-gen. The permgen space is limited to start 
with.... then, if these applications are doing JDOM processing then you 
are in trouble if JDOM uses the PermGen space for 'scratch' data.

PermGen is a non-obvious component of Java. Novices do not know of it, 
do not understand it's purpose, and do not know how to debug it. By way 
of example, I ran in to it using intern() and it took me days to figure 
out where the memory was going.... (years ago). Perhaps that is why I am 
so sensitive to it. Similarly, do a search for 'Tomcat PermGen' and you 
quickly understand how precious PermGen space is, it is not to be 
squandered on something that is easy to replace on the heap.


More information about the jdom-interest mailing list