Michael, 

> String.intern() always returns a unique string object, so you 
> could override addSymbol like this:
> 
> public String addSymbol(char[] buffer, int offset, int length) {
>    return new String(buffer, offset, length).intern(); }
> 
> and cache nothing in the table. This would be slower but 
> you'd save memory which would have otherwise been used to 
> create a new Entry and a new character array (that has the 
> same contents as the string). The memory consumption of 
> String.intern() is another story, but for Xerces to work 
> correctly it can't be avoided.

On the Java heap side, using a non-caching SymbolTable leads to only 700kB
of memory allocated at the end of parsing such an XML document instead of
the 20MB before. I do see a lot of Java GC going on due to the exhaustive
String creation. One step closer to a solution I guess... :-)

How can I measure the size of the interned string table held privately by
the String class? Is this table kept in memory until the VM ends? Does it
also shrink or does it only grow?

Ringo

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to