  | |  | Xerces consuming memory when reusing parser | Xerces consuming memory when reusing parser 2003-03-13 - By Rob Griffin
Sandy,
Well spotted.
I've got 2.3.0 but my test bed is still using 2.1.0. Doh!
Sorry for wasting your time. I'll test again with 2.3.0.
By the way, is there anything in the Xerces JAR file that explicitly shows the version number? There is nothing that I can see. That would be a nice enhancement.
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
> -----Original Message----- > From: sandygao@(protected) [mailto:sandygao@(protected)] > Sent: Friday, 14 March 2003 2:36 AM > To: xerces-j-user@(protected) > Subject: Re: Xerces consuming memory when reusing parser > > > BTW, a memory leak bug related to attribute uses was fixed > last Nov., which > should be included in 2.3.0. Is it possible that you are > using an earlier > version? Thx. > > Sandy Gao > Software Developer, IBM Canada > (1-905) 413-3255 > sandygao@(protected) > > > > > > Rob Griffin > > <rob.griffin@(protected) To: > xerces-j-user@(protected) > > uest.com> cc: > > Subject: > Xerces consuming memory when reusing parser > 03/11/2003 08:31 > > PM > > Please respond to > > xerces-j-user > > > > > > > > > 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-expansion", > Boolean.FALSE); > factory.setAttribute(" > http://xml.org/sax/features/external-parameter-entities", > 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 > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: xerces-j-user-unsubscribe@(protected) > For additional commands, e-mail: xerces-j-user-help@(protected) >
<!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>RE: Xerces consuming memory when reusing parser</TITLE> </HEAD> <BODY>
<P><FONT SIZE=2>Sandy,</FONT> </P>
<P><FONT SIZE=2>Well spotted.</FONT> </P>
<P><FONT SIZE=2>I've got 2.3.0 but my test bed is still using 2.1.0. Doh!</FONT> </P>
<P><FONT SIZE=2>Sorry for wasting your time. I'll test again with 2.3.0.</FONT> </P>
<P><FONT SIZE=2>By the way, is there anything in the Xerces JAR file that explicitly</FONT> <BR><FONT SIZE=2>shows the version number? There is nothing that I can see. That would be</FONT> <BR><FONT SIZE=2>a nice enhancement. </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> <BR> <BR>
<P><FONT SIZE=2>> -----Original Message-----</FONT> <BR><FONT SIZE=2>> From: sandygao@(protected) [<A HREF="mailto:sandygao@(protected) .ibm.com">mailto:sandygao@(protected)</A>]</FONT> <BR><FONT SIZE=2>> Sent: Friday, 14 March 2003 2:36 AM</FONT> <BR><FONT SIZE=2>> To: xerces-j-user@(protected)</FONT> <BR><FONT SIZE=2>> Subject: Re: Xerces consuming memory when reusing parser< /FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> BTW, a memory leak bug related to attribute uses was fixed </FONT> <BR><FONT SIZE=2>> last Nov., which</FONT> <BR><FONT SIZE=2>> should be included in 2.3.0. Is it possible that you are </FONT> <BR><FONT SIZE=2>> using an earlier</FONT> <BR><FONT SIZE=2>> version? Thx.</FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> Sandy Gao</FONT> <BR><FONT SIZE=2>> Software Developer, IBM Canada</FONT> <BR><FONT SIZE=2>> (1-905) 413-3255</FONT> <BR><FONT SIZE=2>> sandygao@(protected)</FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> Rob Griffin </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> <rob.griffin@(protected) To: </FONT> <BR><FONT SIZE=2>> xerces-j-user@(protected)   ; </FONT> <BR><FONT SIZE=2>> < /FONT> <BR><FONT SIZE=2>> uest.com> cc: </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> Subject : </FONT> <BR><FONT SIZE=2>> Xerces consuming memory when reusing parser </FONT> <BR><FONT SIZE=2> </FONT> <BR><FONT SIZE=2>> 03/11/2003 08:31 < /FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> PM   ; </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> Please respond to </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> xerces-j-user </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> Hi,</FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><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> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> Here's my setup code:</FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> DocumentBuilderFactory factory = </FONT> <BR><FONT SIZE=2>> DocumentBuilderFactory.newInstance</FONT> <BR><FONT SIZE=2>> ();</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("</FONT> <BR><FONT SIZE=2>> <A HREF="http://apache.org/xml/features/dom/defer-node -expansion" TARGET="_blank">http://apache.org/xml/features/dom/defer-node -expansion</A>", </FONT> <BR><FONT SIZE=2>> Boolean.FALSE);</FONT> <BR><FONT SIZE=2>> factory .setAttribute("</FONT> <BR><FONT SIZE=2>> <A HREF="http://xml.org/sax/features/external-parameter -entities" TARGET="_blank">http://xml.org/sax/features/external-parameter -entities</A>", </FONT> <BR><FONT SIZE=2>> Boolean.FALSE);</FONT> <BR><FONT SIZE=2>> factory .setAttribute("</FONT> <BR><FONT SIZE=2>> <A HREF="http://apache.org/xml/features/validation/schema " TARGET="_blank">http://apache.org/xml/features/validation/schema</A>", Boolean.TRUE);</FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> I am using an XML Schema for validation.</FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> I then get one instance of DocumentBuilder from this factory </FONT> <BR><FONT SIZE=2>> and use it to</FONT> <BR><FONT SIZE=2>> repeatedly validate documents.</FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> Last night I ran it overnight with another process feeding in </FONT> <BR><FONT SIZE=2>> a small XML</FONT> <BR><FONT SIZE=2>> document ( < 10 elements) every</FONT> <BR><FONT SIZE=2>> ten seconds. This morning I see more than 260,000 instances of</FONT> <BR><FONT SIZE=2>> org.apache.xerces.impl.xs.XSAttributeUseImpl.</FONT> <BR><FONT SIZE=2>> Forcing a garbage collection does not free these objects. There are no</FONT> <BR><FONT SIZE=2>> other objects with anywhere near this count.</FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> The resulting document is being used to create a Java object, </FONT> <BR><FONT SIZE=2>> but in this</FONT> <BR><FONT SIZE=2>> case that object is almost</FONT> <BR><FONT SIZE=2>> immediately deferenced. I can see the count of that type fall to zero</FONT> <BR><FONT SIZE=2>> periodically, which is what I expect.</FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> Is this a bug? If so I can give more details about where </FONT> <BR><FONT SIZE=2>> these objects are</FONT> <BR><FONT SIZE=2>> being allocated.</FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> As a workaround I am now periodically creating a new < /FONT> <BR><FONT SIZE=2>> DocumentBuilderFactory</FONT> <BR><FONT SIZE=2>> and DocumentBuilder and this</FONT> <BR><FONT SIZE=2>> fixes the problem, but I'd rather not have to do this.< /FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> Regards,</FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><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> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> </FONT> <BR><FONT SIZE=2>> --------------------------------------------------------- ------------</FONT> <BR><FONT SIZE=2>> To unsubscribe, e-mail: xerces-j-user-unsubscribe@(protected) .apache.org</FONT> <BR><FONT SIZE=2>> For additional commands, e-mail: xerces-j-user-help@(protected) .apache.org</FONT> <BR><FONT SIZE=2>> </FONT> </P>
</BODY> </HTML>
|
|
 |