Reuse your IndexSearcher! :) Also, I think somebody has written some EJB stuff to work with Lucene. The project is on SF.net.
Otis --- Terence Lai <[EMAIL PROTECTED]> wrote: > Hi All, > > I am getting a OutOfMemoryError when I deploy my EJB application. To > debug the problem, I wrote the following test program: > > public static void main(String[] args) { > try { > Query query = getQuery(); > > for (int i=0; i<1000; i++) { > search(query); > > if ( i%50 == 0 ) { > System.out.println("Sleep..."); > Thread.currentThread().sleep(5000); > System.out.println("Wake up!"); > } > } > } catch (Exception e) { > e.printStackTrace(); > } > } > > private static void search(Query query) throws IOException { > FSDirectory fsDir = null; > IndexSearcher is = null; > Hits hits = null; > > try { > fsDir = FSDirectory.getDirectory("C:\\index, false); > is = new IndexSearcher(fsDir); > SortField sortField = new > SortField("profile_modify_date", > SortField.STRING, true); > > hits = is.search(query, new Sort(sortField)); > } finally { > if (is != null) { > try { > is.close(); > } catch (Exception ex) { > } > } > > if (fsDir != null) { > try { > is.close(); > } catch (Exception ex) { > } > } > } > > } > > In the test program, I wrote a loop to keep calling the search > method. Everytime it enters the search method, I would instantiate > the IndexSearcher. Before I exit the method, I close the > IndexSearcher and FSDirectory. I also made the Thread sleep for 5 > seconds in every 50 searches. Hopefully, this will give some time for > the java to do the Garbage Collection. Unfortunately, when I observe > the memory usage of my process, it keeps increasing until I got the > java.lang.OutOfMemoryError. > > Note that I invoke the IndexSearcher.search(Query query, Sort sort) > to process the search. If I don't specify the Sort field(i.e. using > IndexSearcher.search(query)), I don't have this problem, and the > memory usage keeps at a very static level. > > Does anyone experience a similar problem? Did I do something wrong in > the test program. I throught by closing the IndexSearcher and the > FSDirectory, the memory will be able to release during the Garbage > Collection. > > Thanks, > Terence > > > > > ---------------------------------------------------------- > Get your free email account from http://www.trekspace.com > Your Internet Virtual Desktop! > > --------------------------------------------------------------------- > 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]