[xsl] java heap management for transform

Subject: [xsl] java heap management for transform
From: ac <ac@xxxxxxxxxxxxx>
Date: Fri, 26 Nov 2010 11:37:35 -0500
Hi,

I have an xslt2 stylesheet that reads a little over 700 xml files and combines them, after some processing, into a single xml file. The source files average a little under 100KB each, with the transformation, with an expected output a little over 70MB. The source files are ordered alphabetically and somewhere between H and I, I get a java heap out-of-memory exception, with Saxon 9.1, however I change the java memory settings (initially I had 128 and 1024). The system has 4GB RAM and The task Manager reports that around 1.8GB is used during the transform (whatever the xms and xmx settings). The command line script is listed below. Does any one have any suggestion. Any help would be appreciated.

java -Dxms2048m -Dxmx2048m -Dfile.encoding=utf8 -cp .;\dev\jboss-3.2.5\server\default\deploy\xml.war\WEB-INF\lib\xercesImpl.jar;\dev\jboss-3.2.5\server\default\deploy\xml.war\WEB-INF\lib\saxon.jar;\dev\jboss-3.2.5\server\default\deploy\xml.war\WEB-INF\lib\dom4j.jar;\dev\jboss-3.2.5\server\default\deploy\xml.war\WEB-INF\lib\dnaos.jar;\dev\jboss-3.2.5\server\default\deploy\xml.war\WEB-INF\lib\sxutil.jar -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl net.sf.saxon.Transform -warnings:recover -o:cosmos.html -s:build\%1.xml -xsl:dnaos.xslt %2 %3 %4 %5 %6 %7 %8 %9

The reported exception follows:

Regards
ac


Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at net.sf.saxon.om.FastStringBuffer.ensureCapacity(FastStringBuffer.java:413)
at net.sf.saxon.om.FastStringBuffer.append(FastStringBuffer.java:104)
at net.sf.saxon.tinytree.TinyParentNodeImpl.getStringValue(TinyParentNodeImpl.java:87)
at net.sf.saxon.tinytree.TinyParentNodeImpl.getStringValueCS(TinyParentNodeImpl.java:39)
at net.sf.saxon.tinytree.TinyNodeImpl.getTypedValue(TinyNodeImpl.java:89)
at net.sf.saxon.expr.Atomizer.evaluateItem(Atomizer.java:178)
at net.sf.saxon.expr.UntypedAtomicConverter.evaluateItem(UntypedAtomicConverter.java:173)
at net.sf.saxon.functions.NormalizeSpace.effectiveBooleanValue(NormalizeSpace.java:110)
at net.sf.saxon.expr.FilterIterator$NonNumeric.matches(FilterIterator.java:182)
at net.sf.saxon.expr.FilterIterator.getNextMatchingItem(FilterIterator.java:65)
at net.sf.saxon.expr.FilterIterator.next(FilterIterator.java:44)
at net.sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:321)
at net.sf.saxon.instruct.ApplyTemplates.apply(ApplyTemplates.java:210)
at net.sf.saxon.instruct.ApplyTemplates.processLeavingTail(ApplyTemplates.java:174)
at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:556)
at net.sf.saxon.instruct.Instruction.process(Instruction.java:93)
at net.sf.saxon.instruct.ElementCreator.processLeavingTail(ElementCreator.java:296)
at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:556)
at net.sf.saxon.instruct.Instruction.process(Instruction.java:93)
at net.sf.saxon.instruct.ElementCreator.processLeavingTail(ElementCreator.java:296)
at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:557)
at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:556)
at net.sf.saxon.instruct.Template.applyLeavingTail(Template.java:203)
at net.sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:345)
at net.sf.saxon.instruct.ApplyTemplates.apply(ApplyTemplates.java:210)
at net.sf.saxon.instruct.ApplyTemplates.processLeavingTail(ApplyTemplates.java:174)
at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:556)
at net.sf.saxon.instruct.Instruction.process(Instruction.java:93)
at net.sf.saxon.instruct.ForEach.processLeavingTail(ForEach.java:321)
at net.sf.saxon.instruct.Choose.processLeavingTail(Choose.java:686)
at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:556)
at net.sf.saxon.instruct.Template.applyLeavingTail(Template.java:203)


Current Thread