Xerces consuming memory when reusing parser 2003-03-11 - By Rob Griffin
Hi,
I have a problem with Xerces 2.3.0 consuming memory in a long running application.
Here's my setup code:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(true); factory.setIgnoringComments(true); factory.setNamespaceAware(true); factory.setAttribute("http://apache.org/xml/features/dom/defer-node-expansio n", Boolean.FALSE); factory.setAttribute("http://xml.org/sax/features/external-parameter-entitie s", Boolean.FALSE); factory.setAttribute("http://apache.org/xml/features/validation/schema", Boolean.TRUE);
I am using an XML Schema for validation.
I then get one instance of DocumentBuilder from this factory and use it to repeatedly validate documents.
Last night I ran it overnight with another process feeding in a small XML document ( < 10 elements) every ten seconds. This morning I see more than 260,000 instances of org.apache.xerces.impl.xs.XSAttributeUseImpl. Forcing a garbage collection does not free these objects. There are no other objects with anywhere near this count.
The resulting document is being used to create a Java object, but in this case that object is almost immediately deferenced. I can see the count of that type fall to zero periodically, which is what I expect.
Is this a bug? If so I can give more details about where these objects are being allocated.
As a workaround I am now periodically creating a new DocumentBuilderFactory and DocumentBuilder and this fixes the problem, but I'd rather not have to do this.
Regards,
Rob Griffin Software Engineer Quest Software 2/293 Camberwell Road Camberwell, Victoria 3124 Australia Phone: +613 98118021 Fax: +613 9811 8099 http://www.quest.com
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=US-ASCII"> <META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2654.45"> <TITLE>Xerces consuming memory when reusing parser</TITLE> </HEAD> <BODY>
<P><FONT SIZE=2>Hi,</FONT> </P>
<P><FONT SIZE=2>I have a problem with Xerces 2.3.0 consuming memory in a long running </FONT> <BR><FONT SIZE=2>application.</FONT> </P>
<P><FONT SIZE=2>Here's my setup code:</FONT> </P> <BR>
<P><FONT SIZE=2> DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();</FONT> <BR><FONT SIZE=2> factory .setValidating(true);</FONT> <BR><FONT SIZE=2> factory .setIgnoringComments(true);</FONT> <BR><FONT SIZE=2> factory .setNamespaceAware(true);</FONT> <BR><FONT SIZE=2> factory .setAttribute("<A HREF="http://apache.org/xml/features/dom/defer-node -expansion" TARGET="_blank">http://apache.org/xml/features/dom/defer-node -expansion</A>", Boolean.FALSE);</FONT> <BR><FONT SIZE=2> factory .setAttribute("<A HREF="http://xml.org/sax/features/external-parameter -entities" TARGET="_blank">http://xml.org/sax/features/external-parameter -entities</A>", Boolean.FALSE);</FONT> <BR><FONT SIZE=2> factory .setAttribute("<A HREF="http://apache.org/xml/features/validation/schema" TARGET="_blank">http://apache.org/xml/features/validation/schema</A>", Boolean.TRUE);</FONT> </P>
<P><FONT SIZE=2>I am using an XML Schema for validation.</FONT> </P>
<P><FONT SIZE=2>I then get one instance of DocumentBuilder from this factory and use it to repeatedly validate documents.</FONT> </P>
<P><FONT SIZE=2>Last night I ran it overnight with another process feeding in a small XML document ( < 10 elements) every</FONT> <BR><FONT SIZE=2>ten seconds. This morning I see more than 260,000 instances of org.apache.xerces.impl.xs.XSAttributeUseImpl.</FONT> <BR><FONT SIZE=2>Forcing a garbage collection does not free these objects. There are no other objects with anywhere near this count.</FONT> </P>
<P><FONT SIZE=2>The resulting document is being used to create a Java object, but in this case that object is almost</FONT> <BR><FONT SIZE=2>immediately deferenced. I can see the count of that type fall to zero periodically, which is what I expect.</FONT> </P>
<P><FONT SIZE=2>Is this a bug? If so I can give more details about where these objects are being allocated. </FONT> </P>
<P><FONT SIZE=2>As a workaround I am now periodically creating a new DocumentBuilderFactory and DocumentBuilder and this</FONT> <BR><FONT SIZE=2>fixes the problem, but I'd rather not have to do this.</FONT> </P>
<P><FONT SIZE=2>Regards,</FONT> </P>
<P><FONT SIZE=2>Rob Griffin</FONT> <BR><FONT SIZE=2>Software Engineer</FONT> <BR><FONT SIZE=2>Quest Software</FONT> <BR><FONT SIZE=2>2/293 Camberwell Road</FONT> <BR><FONT SIZE=2>Camberwell, Victoria 3124</FONT> <BR><FONT SIZE=2>Australia</FONT> <BR><FONT SIZE=2>Phone: +613 98118021</FONT> <BR><FONT SIZE=2>Fax: +613 9811 8099</FONT> <BR><FONT SIZE=2><A HREF="http://www.quest.com" TARGET="_blank">http://www .quest.com</A></FONT> </P>
</BODY> </HTML>
|
|