This sample piece of code will trigger OOM on jdk1.5.0_06.
[Full GC 13695K->13669K(14784K), 0.1407826 secs]
ERROR: 'Java heap space'
FATAL ERROR: 'Could not compile stylesheet'
[Full GC 13694K->13694K(14784K), 0.1335922 secs]
[Full GC 13694K->13598K(14784K), 0.1605842 secs]
javax.xml.transform.TransformerConfigurationException: Could not compile stylesheet
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:824)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:619)
at test$1.run(test.java:33)
Same issue with 1.5.0_07
bash-2.05# /net/koori.sfbay/onestop/jdk/1.5.0_07/promoted/latest/binaries/solaris-sparc/bin/java -verbose:gc -Xmx16m test
ERROR: 'Java heap space'
FATAL ERROR: 'Could not compile stylesheet'
[Full GC 12784K->12637K(14592K), 0.1542826 secs]
javax.xml.transform.TransformerConfigurationException: Could not compile stylesheet
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:824)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:619)
at test$1.run(test.java:33)
It is working fine on jdk 1.4.2_10 and jdk 1.6_b63
----------------------------------------------------------------------------------------
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.transform.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
public class test {
public static void main (String[] args) throws Exception, TransformerFactoryConfigurationError
{
final TransformerFactory newInstance = TransformerFactory.newInstance();
// final ChannelCache cache;
final Object monitor = new Object ();
// cache = ChannelCache.instance();
for (;;)
{
synchronized (monitor)
{
new Thread ()
{
public void run ()
{
try
{
synchronized (monitor)
{
Source xsl = new StreamSource ("test.xsl");
Transformer transformer = newInstance.newTransformer(xsl);
Source xml = new StreamSource ("test.xml");
transformer.transform(xml, new StreamResult ("ouput.xml"));
//cache.addCachedContent("123");
monitor.notify();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}.start();
monitor.wait();
Thread.yield();
}
}
}
--------------------------------------------------------------------------------
------------------------test.xsl
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="foo">
<out><xsl:value-of select="."/></out>
</xsl:template>
</xsl:stylesheet>
------------------------ test.xml
<?xml version="1.0"?>
<foo>Hello XSL 348298409328409328409328409328409328409328409328409328403298409328409328409328403298403298403298403298403298403928403
284032840329840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000</foo>
----------------------------------------