<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; CHARSET=UTF-8">
<META content="MSHTML 6.00.2800.1276" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>The method I gave in my previous email is used when
I have a String. This is the way I am build the document when I already have the
InputStream. And I am encountering the OutOfMemoryError problem when I am using
this method. I would assume the earlier method would definitely give the same
problem (because it has to convert String to byte[] and then prepare the
InputStream from that).</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>This is the method:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial
size=2>***********************************************************</FONT></DIV>
<DIV><FONT face=Arial size=2> public Document
getDocumentFromStream(InputStream xmlStream)<BR> throws Exception
{<BR> Document doc = null;</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2> BufferedReader reader =
null;</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2> try {<BR> reader
=<BR> new
BufferedReader(<BR> new
InputStreamReader(xmlStream, "ISO-8859-1"));<BR> } catch
(UnsupportedEncodingException e) {<BR> log.warn("Character set
Cp1252 not supported, defaulting to UTF-8");<BR> reader
=<BR> new BufferedReader(new InputStreamReader(xmlStream,
"UTF8"));<BR> }</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2> try {<BR> SAXBuilder
builder = new SAXBuilder(false);</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2> doc =
builder.build(reader);</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2> return doc;</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2> } catch (JDOMException e)
{<BR> log.error("Error parsing file:",
e);<BR> throw e;<BR> }<BR> }</FONT></DIV>
<DIV><FONT face=Arial
size=2>*********************************************************</FONT></DIV>
<BLOCKQUOTE dir=ltr
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
<DIV
style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B>
<A title=peddip@contextmedia.com href="mailto:peddip@contextmedia.com">Pramodh
Peddi</A> </DIV>
<DIV style="FONT: 10pt arial"><B>To:</B> <A title=jdom-interest@jdom.org
href="mailto:jdom-interest@jdom.org">jdom-interest@jdom.org</A> </DIV>
<DIV style="FONT: 10pt arial"><B>Sent:</B> Monday, December 29, 2003 4:48
PM</DIV>
<DIV style="FONT: 10pt arial"><B>Subject:</B> Memory problems</DIV>
<DIV><BR></DIV>
<DIV><FONT face=Arial size=2>Hi,</FONT></DIV>
<DIV><FONT face=Arial size=2>I am using JDOM for XML processing. I use
SAXBuilder. I am having memory problems when it deals with huge documents
(like 10MB), even though it is using SAXBuidler. It throws OutOfMemoryError
when I try to build a 8MB document.</FONT></DIV>
<DIV><FONT face=Arial size=2>I assume it does not keep the whole tree in
memory if I use SAXBuilder. Does it? If what I assume is right, why is it
running out of memory while building the doc of 8MB xml? 8MB should not
be enough to make fail because of memory problems. right?</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>This is how I build a document:</FONT></DIV>
<DIV><FONT face=Arial
size=2>****************************************************************************************************</FONT></DIV>
<DIV><FONT face=Arial size=2> public Document
getDocumentfromString(String
xmlString)<BR> throws JDOMException,
IOException {<BR> Document schemaDoc
= null;<BR> SAXBuilder builder = new
SAXBuilder(false);<BR> String
resultingXML = null;<BR> byte[]
xmlBytes = null;</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2> try
{<BR> //get
the UTF 8 encoded
bytes<BR>
xmlBytes =
xmlString.getBytes("UTF8");<BR>
schemaDoc = builder.build(new
ByteArrayInputStream(xmlBytes));<BR>
} catch (UnsupportedEncodingException usee)
{<BR>
// system does not support UTF-8 encoding. use default
encoding <BR>
schemaDoc = builder.build(new
StringReader(xmlString));<BR>
}</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2> return
schemaDoc;<BR> }</FONT></DIV>
<DIV><FONT face=Arial
size=2>*****************************************************************************************************</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Am I doing anything wrong to make it
fail while building a 8MB doc?</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Do you think using JAXP API (again, using SAX) is
better memory wise?</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Any help would be greatly
appreciated!</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Thanks,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Pramodh.</FONT></DIV></BLOCKQUOTE></BODY></HTML>