<!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>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>This is the method:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial 
size=2>***********************************************************</FONT></DIV>
<DIV><FONT face=Arial size=2>&nbsp;public Document 
getDocumentFromStream(InputStream xmlStream)<BR>&nbsp;&nbsp;throws Exception 
{<BR>&nbsp;&nbsp;Document doc = null;</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;BufferedReader reader = 
null;</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;try {<BR>&nbsp;&nbsp;&nbsp;reader 
=<BR>&nbsp;&nbsp;&nbsp;&nbsp;new 
BufferedReader(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new 
InputStreamReader(xmlStream, "ISO-8859-1"));<BR>&nbsp;&nbsp;} catch 
(UnsupportedEncodingException e) {<BR>&nbsp;&nbsp;&nbsp;log.warn("Character set 
Cp1252 not supported, defaulting to UTF-8");<BR>&nbsp;&nbsp;&nbsp;reader 
=<BR>&nbsp;&nbsp;&nbsp;&nbsp;new BufferedReader(new InputStreamReader(xmlStream, 
"UTF8"));<BR>&nbsp;&nbsp;}</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;try {<BR>&nbsp;&nbsp;&nbsp;SAXBuilder 
builder = new SAXBuilder(false);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp;doc = 
builder.build(reader);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp;return doc;</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;} catch (JDOMException e) 
{<BR>&nbsp;&nbsp;&nbsp;log.error("Error parsing file:", 
e);<BR>&nbsp;&nbsp;&nbsp;throw e;<BR>&nbsp;&nbsp;}<BR>&nbsp;}</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?&nbsp;If what I assume is right, why is it 
  running out of memory while building the doc of 8MB xml? 8MB&nbsp;should not 
  be enough to make fail because of memory problems. right?</FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT>&nbsp;</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>&nbsp;&nbsp;&nbsp; public Document 
  getDocumentfromString(String 
  xmlString)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws JDOMException, 
  IOException {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Document schemaDoc 
  = null;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SAXBuilder builder = new 
  SAXBuilder(false);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String 
  resultingXML = null;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] 
  xmlBytes = null;</FONT></DIV>
  <DIV>&nbsp;</DIV>
  <DIV><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try 
  {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //get 
  the UTF 8 encoded 
  bytes<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  xmlBytes = 
  xmlString.getBytes("UTF8");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  schemaDoc = builder.build(new 
  ByteArrayInputStream(xmlBytes));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  } catch (UnsupportedEncodingException usee) 
  {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  //&nbsp;&nbsp;&nbsp;system does not support UTF-8 encoding. use default 
  encoding&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  schemaDoc = builder.build(new 
  StringReader(xmlString));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  }</FONT></DIV>
  <DIV>&nbsp;</DIV>
  <DIV><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 
  schemaDoc;<BR>&nbsp;&nbsp;&nbsp; }</FONT></DIV>
  <DIV><FONT face=Arial 
  size=2>*****************************************************************************************************</FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
  <DIV><FONT face=Arial size=2>Am I doing anything wrong to make it 
  fail&nbsp;while building a&nbsp;8MB doc?</FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT>&nbsp;</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>&nbsp;</DIV>
  <DIV><FONT face=Arial size=2>Any help would be greatly 
  appreciated!</FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
  <DIV><FONT face=Arial size=2>Thanks,</FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
  <DIV><FONT face=Arial size=2>Pramodh.</FONT></DIV></BLOCKQUOTE></BODY></HTML>