[ https://issues.apache.org/jira/browse/LUCENE-842?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12485445 ]
Thomas Connolly commented on LUCENE-842: ---------------------------------------- Just to add closure this issue had already been raised for Netbeans 5.5 and subsequently fixed. See http://www.netbeans.org/issues/show_bug.cgi?id=95020 Again thanks for the help resolving the profiler problem. > ParallelMultiSearcher memory leak > --------------------------------- > > Key: LUCENE-842 > URL: https://issues.apache.org/jira/browse/LUCENE-842 > Project: Lucene - Java > Issue Type: Bug > Components: Search > Affects Versions: 2.1 > Environment: Windows XP SP2 and Red Hat EL 4 > Reporter: Thomas Connolly > Priority: Critical > Fix For: 2.1 > > Attachments: search_test_gc.PNG, search_test_heap.PNG, > TestParallelMultiSearcherMemLeak.java > > > When using the org.apache.lucene.search.ParallelMultiSearcher to search on a > single searcher (reading a single index), continuous runs result in a memory > leak. > Substituting the MultiSearcher does not result in a memory leak. and is the > workaround currently used. > And example of the code used is as follows. Note the close routine was added > for the individual searchers and the MultiSearcher otherwise the was a leak > in MultiSearcher. > private void doSearch(Search search) > { > IndexSearcher[] indexSearchers = null; > > MultiSearcher multiSearcher = null; > try > { > indexSearchers = getIndexSearcher(); > > // aggregate the searches across multiple indexes > multiSearcher = new ParallelMultiSearcher(indexSearchers); // > causes LEAK BAD > //multiSearcher = new MultiSearcher(indexSearchers); // NO leak > GOOD > final QueryParser parser = new QueryParser("content", new > ExtendedStandardAnalyser()); > final Query query = parser.parse(search.getQuery()); > > final Hits hits = multiSearcher.search(query, > getFilter(search.getFilters()), getSort(search.getSort())); > // process hits... > } > finally > { > close(indexSearchers); > close(multiSearcher); > } > } > /** > * Close the index searchers. > * > * @param indexSearchers Index Searchers. > */ > private static void close(IndexSearcher[] indexSearchers) > { > if (indexSearchers != null) > { > for (IndexSearcher indexSearcher : indexSearchers) > { > try > { > indexSearcher.close(); > } > catch (IOException ioex) > { > LOGGER.warn("Unable to close the index searcher!", ioex); > } > } > } > } > > /** > * Close the multi-searcher. > * > * @param aMultiSearcher Index Searchers. > */ > private static void close(MultiSearcher aMultiSearcher) > { > try > { > aMultiSearcher.close(); > } > catch (IOException ioex) > { > LOGGER.warn("Unable to close the multi searcher!", ioex); > } > } -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]