I've started to get memory exceptions on objectdb instances running as a server. The objectdb log reports this as:
[2011-07-29 23:28:41 #20 server] java.lang.OutOfMemoryError: Java heap space [2011-07-29 23:28:41 #21 server] java.lang.OutOfMemoryError: Java heap space at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at java.io.BufferedInputStream.fill(BufferedInputStream.java:218) at java.io.BufferedInputStream.read1(BufferedInputStream.java:256) at java.io.BufferedInputStream.read(BufferedInputStream.java:313) at com.objectdb.o.NTS.z(NTS.java:314) at com.objectdb.o.NTS.y(NTS.java:274) at com.objectdb.o.HND.run(HND.java:128) at java.lang.Thread.run(Thread.java:595) [2011-07-30 19:53:24 #22 store] Database 'F:\calculationservice\objectdb\db-files\WorkflowHistory.odb' is closed by 14140@SE101924 [2011-07-30 19:54:36 #23 server] [ObjectDB 2.2.8] Unexpected exception (Error 990) Generated by Java HotSpot(TM) 64-Bit Server VM 1.5.0_21 (on Windows 2003 5.2). Please report this error on http://www.objectdb.com/database/issue/new com.objectdb.o.InternalException: java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError: Java heap space
and:
[2011-07-31 22:49:01 #18 tool] java.lang.OutOfMemoryError: Java heap space
The server manages 2 "queue" databases used for communication between processes.
One of the databases has 2 writers and 1 reader. The other has a single writer and single reader. The message size going into the queue is not large - around 4k at most. Each read/write operation is done via a new EntityManager which is closed straight afterwards.
The server is running with settings -Xms512m -Xmx1g. I have scope to increase these limits but would like to get an understanding of where the memory is being used. In each exception case the server has typically been running for 3-4 days without issue.