Well, we have a production Weblogic environment over Oracle JRockit Virtual Machine. The problem is that we are trying to avoid an " OutOfMemoryError" that is thrown everyday by a SOA Managed Server and causes a failure and stop of the managed server which then has to be restarted, causing applications downtime.
Windows 64bits Server 2008 R2 Standard. 32GB RAM
Oracle JRockit R28.2.2
Oracle Weblogic Server 10.3.2
Oracle SOA and BPM Suite 11g R1 184.108.40.206 Features Pack
Oracle Services Bus 11g 220.127.116.11
The message error is the following:
java.lang.OutOfMemoryError: classblock allocation, 110787528 loaded, 84224K footprint, in check_alloc (src/jvm/model/classload/classalloc.c:215).
Attempting to allocate 7G bytes
There is insufficient native memory for the Java
Runtime Environment to continue.
The system is out of physical RAM or swap space
In 32 bit mode, the process size limit was hit
Reduce memory load on the system
Increase physical memory or swap space
Check if swap backing store is full
Use 64 bit Java on a 64 bit OS
Decrease Java heap size (-Xmx/-Xms)
Decrease number of Java threads
Decrease Java thread stack sizes (-Xss)
Disable compressed references (-XXcompressedRefs=false)
The following are the conclusions I have made about this problem:
- It is clear in the message error that this is not a Java Heap Size issue since those kind of errors usually look like: (Java Heap Space, getNewTLA, etc...) and the message clearly states: "There is insufficient native memory for the Java Runtime Environment to continue". Besides, the MissionControl recordings show that the heap is constantly being garbage collected and there are not memory leaks.
- The process size is about 10GB (7GB Heap Size and 4GB Native memory) but the platform consists of a 64 bit Windows 2008 Server with 32GB, so this is neither a "process size limit issue".
-According to this, it could be clear that the problem is that "The system is out of physical RAM or swap space" but this isn't true either, since the system has a 48GB max paging file (wich in fact is not being used) and most importantly, the system has a total of 16GB RAM being used by all processes, leaving 16GB memory free for use.
I have come to think that either JRockit is failing and throwing the exception without a good reason, or the message displayed is wrong and it is not letting me find the right cause of the issue we are facing.
Do you think you could give me your JAVA_OPTS? 7G of HEAP is too large for a JVM. If you have this amount of memory and still out of it. May be, you have a develop issue. Next time, do a thread Dump to analyze the problem. If you want to, you can post it and I'll help you.