I want to use RAMDirectory to raise the peformance of lucene. So I cut the index dir to 3 smaller index dirs(1G one index dir). Then I use RAMDirectory to load the 3 dirs, and rebind the 3 searcher by RMI.(My server has 8G mem) At last, I lookup the 3 remote searcher to new a ParalellMultiSearcher. It works correctorly, but sometimes occur errors like :
java.rmi.ServerError: Error occurred in server thread; nested exception is: java.lang.OutOfMemoryError: Java heap space at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:333) at sun.rmi.transport.Transport$1.run(Transport.java:159) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:155) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) at java.lang.Thread.run(Thread.java:619) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source) at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source) at sun.rmi.server.UnicastRef.invoke(Unknown Source) at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(Unknown Source) at java.rmi.server.RemoteObjectInvocationHandler.invoke(Unknown Source) at $Proxy0.search(Unknown Source) at org.apache.lucene.search.MultiSearcherThread.run(ParallelMultiSearcher.java:251) Caused by: java.lang.OutOfMemoryError: Java heap space Thanks.