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]