Re: OutOfMemory when using str:tokenize or str:split

Uche Ogbuji <[email protected]>
Newsgroups gmane.text.xml.xslt.extensions
Organization Fourthought, Inc.
Message-ID <1130992676.24249.43.camel@borgia>
On Fri, 2005-10-14 at 11:44 -0400, Michael Heinrichs wrote:
> There appears to be a severe resource leak issue when using the
> functions str:tokenize or str:split as included in the latest version of
> Xalan (2.7.0, and also 2.6.1).  Even for relatively small XML files,
> when repeatedly using these functions, we are encountering OutOfMemory
> exceptions even with large (2GB) maximum heap sizes.  This may be
> related to a previous mailing list posting, which asks whether this is
> an EXSLT problem, or a Xalan problem (I'm asking too):

EXSLT provides the specification.  Xalan provides the implementation, so
implementation issues are a matter for Xalan developers.

-- 
Uche

> http://lists.fourthought.com/pipermail/exslt/2005-July/001256.html
> 
> I created a simple testcase to demonstrate the problem, please see the
> details below.  If I use the stylesheet version of the function, I don't
> encounter this memory issue.
> 
> Thanks,
> 
> Mike
> 
> test.xml (vary the number of 'row' elements)
> ========
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <document>
> <row>1.2.3.4.5.6.7.8.9.0</row>
> </document>
> ====================================
> 
> test.xsl
> ========
> <?xml version="1.0"?>
> <xsl:stylesheet version="1.0"
>    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>    xmlns:str="http://exslt.org/strings">
> 
>   <xsl:template match="row">
>     <xsl:variable name="test" select="str:tokenize(.,'.')"/>
>   </xsl:template>
> </xsl:stylesheet>
> ====================================
> 
> Command-line:
> > java -cp
> "C:\tmp\xalan-j_2_7_0\xalan.jar;C:\tmp\xalan-j_2_7_0\serializer.jar;C:\t
> mp\xalan-j_2_7_0\xml-apis.jar;C:\tmp\xalan-j_2_7_0\xercesImpl.jar"
> -Xmx1024m org.apache.xalan.xslt.Process -IN test.xml -XSL test.xsl -OUT
> test_out.xml
> 
> Test 1: test.xml with 1,000 rows; file size: 32KB
> Result: Transformation completes successfully; maximum process size:
> ~163MB
> 
> Test 2: test.xml with 10,000 rows; file size: 312KB
> Result: Transformation aborts with exception; maximum process size:
> ~900MB
> 
> file:///c:/tmp/test.xsl; Line #12; Column #61; XSLT Error
> (javax.xml.transform.TransformerException): No more DTM IDs are
> available Exception in thread "main" java.lang.RuntimeException: No more
> DTM IDs are available
>         at org.apache.xalan.xslt.Process.doExit(Process.java:1153)
>         at org.apache.xalan.xslt.Process.main(Process.java:1126)
> 
> > java -version
> java version "1.5.0_04"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_04-b05)
> Java HotSpot(TM) Client VM (build 1.5.0_04-b05, mixed mode, sharing)
> _______________________________________________
> exslt mailing list
> [email protected]
> http://www.exslt.org/list
> 
-- 
Uche Ogbuji                               Fourthought, Inc.
http://uche.ogbuji.net                    http://fourthought.com
http://copia.ogbuji.net                   http://4Suite.org
Articles: http://uche.ogbuji.net/tech/publications/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.