Hello Marc I'd suggest you create the IndexSearcher outside of your method and pass the indexreader as a parameter ...
like : private Document getDocumentData(IndexReader reader, String id) you don't have a memory leak you have a intensive use of memory.. On Wed, Nov 5, 2008 at 3:11 PM, Marc Sturlese <[EMAIL PROTECTED]>wrote: > > Hey there, I have posted about this problem before but I think I didn't > explain mysql very well. > I'll try to explain my problem inside the context: > I get ids from a database and I look for the documents in an index that > correspon to each id. There is just one match for every id. One I have the > docuement, I have to modify some fields. What I do is to create a new doc, > copy the fields of the old doc doing the modifications, delete the old doc > from the index and add the new. > I have to do it for about 5.000 documents. > My problem is that when I ejecute the app it starts increasing the memory > use until 700Mb or even more. > I have realized that the memory leak apperars when getting the docuements. > I leave here the piece of code I use to do that... any advice would be > really helpful coz it's driving me mad. > > private Document getDocumentData(String id) { > IndexSearcher searcher = null ; > IndexReader reader = null; > Document doc = null ; > TermDocs td = null; > > try { > > searcher = new IndexSearcher(path_my_index) ; > reader=searcher.getIndexReader(); > > td=reader.termDocs(new Term(GlobalFields.ID,id)) ; > > if(td.next()) > { > doc = reader.document(td.doc()) ; > } > if(td != null) > { > td.close() ; > } > td=null; > } catch (Exception ex) { > logger.error("Troubles geting data: " + ex.getMessage()) ; > logger.error("Stack: " + ErrorStack.getError(ex)) ; > } finally { > if(searcher != null) { > try { > reader.close() ; > searcher.close() ; > reader = null ; > searcher = null ; > } catch(Exception e){} ; > reader = null ; > searcher = null ; > } > } > return doc ; > } > > This functions is called for every doc which I have to get the information > PD: If I call manually the garbage collector at the end of the function the > memory leak never apears... but the app runs really slow!! > Thanks in advanced > > Marc > > > -- > View this message in context: > http://www.nabble.com/memory-leak-getting-docs-tp20348816p20348816.html > Sent from the Lucene - Java Users mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- Bruno da Silva Consultant Abilis Solutions 1407 de la Montagne Montreal, Quebec H3G 1Z3 Cell: 514 - 572 3453 [EMAIL PROTECTED]