Ying,

You should follow this finally block advice below.  In addition, I
think you can just close the reader, and it will close the underlying
stream (I'm not sure about that, double-check it).

You are not running out of file handles, though.  Your JVM is running
out of memory.  You can play with:

1) -Xms and -Xmx JVM command-line parameters
2) IndexWriter's parameters: mergeFactor and minMergeDocs - check the
Javadocs for more info.  They will let you control how much memory your
indexing process uses.

Otis


--- Sildy Augustine <[EMAIL PROTECTED]> wrote:

> I think you should close your files in a finally clause in case of
> exceptions with file system and also print out the exception. 
> 
> You could be running out of file handles.
> 
> -----Original Message-----
> From: Jin, Ying [mailto:[EMAIL PROTECTED] 
> Sent: Friday, December 10, 2004 11:15 AM
> To: [EMAIL PROTECTED]
> Subject: OutOfMemoryError with Lucene 1.4 final
> 
> Hi, Everyone,
> 
>  
> 
> We're trying to index ~1500 archives but get OutOfMemoryError about
> halfway through the index process. I've tried to run program under
> two
> different Redhat Linux servers: One with 256M memory and 365M swap
> space. The other one with 512M memory and 1G swap space. However,
> both
> got OutOfMemoryError at the same place (at record 898). 
> 
>  
> 
> Here is my code for indexing:
> 
> ===============================================
> 
>     Document doc = new Document();
> 
>     doc.add(Field.UnIndexed("path", f.getPath()));
> 
>     doc.add(Field.Keyword("modified",
> 
>  
> DateField.timeToString(f.lastModified())));
> 
>     doc.add(Field.UnIndexed("eprintid", id));
> 
>     doc.add(Field.Text("metadata", metadata));
> 
>  
> 
>     FileInputStream is = new FileInputStream(f);  // the text file
> 
>     BufferedReader reader = new BufferedReader(new
> InputStreamReader(is));
> 
>  
> 
>     StringBuffer stringBuffer = new StringBuffer();
> 
>     String line = "";
> 
>     try{
> 
>       while((line = reader.readLine()) != null){
> 
>         stringBuffer.append(line);
> 
>       }
> 
>       doc.add(Field.Text("contents", stringBuffer.toString()));
> 
>       // release the resources
> 
>       is.close();
> 
>       reader.close();
> 
> }catch(java.io.IOException e){}
> 
> =================================================
> 
> Is there anything wrong with my code or I need more memory?
> 
>  
> 
> Thanks for any help!
> 
> Ying
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to