[
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]