We are facing an OOM in production, that shows intermittently, with any load and in any function of the application.
I know that sounds not new to all. Anyway, We need advice on how to solve the problem. So, here is a list of questions.
1. Using a HeapDump and several analysis tools, we were not able to find any memory leak. We have enough memory and a -Xms512m -Xmx784m setting. Nevertheless, the dump file is just 115mb or less. Can we compare that? Is that size a clue we can use to determine the problem is somewhere else and not actually that the memory is being totally consumed?
2. Now, if the above holds true, and there is actually memory unused (wonder how can we totally be sure of that), how come the JVM throws the exception?
3. I read something about the different memory "sections" to hold object of different ages (GC generational model). Is if possible some of those sections are not growing although there is memory to use? How can we fine tune those settings, if there are settings for that?
4. Further more, we are working in this config:
Operating System W2K3 SP2
Could it be and older JMV-New O.S conflict problem?
The actual error is:
Unexpected Error; nested exception is:
java.rmi.ServerError: Unexpected Error; nested exception is:
5. Unexpected Errors. Should this mean an error captured at JVM? That is, the exception is not caught during normal execution like creating an object or going through a loop. Our guess it is thrown when actually executing the GC. How can we sure of that? If that is correct, does it mean is it a JVM problem?
Thanks for your help.