Reputation: 1741
I have a production system with a JBoss application server running on JDK 1.6.0_24, JBoss 4.3. Every now and then, the server crashes and a dump file created by the JVM has consistent results:
{Heap before GC invocations=6421 (full 4675):
PSYoungGen total 521536K, used 518784K [0xdbc00000, 0xfbc00000, 0xfbc00000)
eden space 518784K, 100% used [0xdbc00000,0xfb6a0000,0xfb6a0000)
from space 2752K, 0% used [0xfb950000,0xfb950000,0xfbc00000)
to space 2752K, 0% used [0xfb6a0000,0xfb6a0000,0xfb950000)
PSOldGen total 1572864K, used 1572855K [0x7bc00000, 0xdbc00000, 0xdbc00000)
object space 1572864K, 99% used [0x7bc00000,0xdbbfdeb8,0xdbc00000)
PSPermGen total 524288K, used 92683K [0x5bc00000, 0x7bc00000, 0x7bc00000)
object space 524288K, 17% used [0x5bc00000,0x61682c30,0x7bc00000)
81507.318: [Full GC [PSYoungGen: 518784K->518784K(521536K)] [PSOldGen: 1572855K->1572855K(1572864K)] 2091639K->2091639K(2094400K) [PSPermGen: 92683K->92683K(524288K)], 1.5334976 secs] [Times: user=1.53 sys=0.00, real=1.53 secs]
Heap after GC invocations=6421 (full 4675):
PSYoungGen total 521536K, used 518784K [0xdbc00000, 0xfbc00000, 0xfbc00000)
eden space 518784K, 100% used [0xdbc00000,0xfb6a0000,0xfb6a0000)
from space 2752K, 0% used [0xfb950000,0xfb950000,0xfbc00000)
to space 2752K, 0% used [0xfb6a0000,0xfb6a0000,0xfb950000)
PSOldGen total 1572864K, used 1572855K [0x7bc00000, 0xdbc00000, 0xdbc00000)
object space 1572864K, 99% used [0x7bc00000,0xdbbfdeb8,0xdbc00000)
PSPermGen total 524288K, used 92683K [0x5bc00000, 0x7bc00000, 0x7bc00000)
object space 524288K, 17% used [0x5bc00000,0x61682c30,0x7bc00000)
}
for JAVA_OPTS, we've got:
-server
-Xms2048m
-Xmx2048m
-Dsun.rmi.dgc.client.gcInterval=3600000
-Dsun.rmi.dgc.server.gcInterval=3600000
-Dsun.lang.ClassLoader.allowArraySyntax=true
-XX:NewSize=512m
-XX:MaxNewSize=512m
-XX:PermSize=512m
-XX:MaxPermSize=512m
-verbosegc
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintHeapAtGC
-XX:+CMSPermGenSweepingEnabled
-XX:-TraceClassLoading
-XX:-TraceClassUnloading
So it seems to me like 2GB are enough and there is more memory that can be used, so there shouldn't be any problem.
any suggestions?
Upvotes: 2
Views: 13136
Reputation: 21
Increase your Xmx value. There's nowhere for the eden space objects to spill-over into with the OldGen at ~100%.
Consider using something like JConsole to attach to the offending application's PID and monitor the JVM memory usage. This will help to determine if certain interactions with JBoss are causing the heap to go belly up or if it's a slow memory leak.
Upvotes: 0
Reputation: 2145
You run out of memory. You set the heap size to 2G and the young generation is 500M and old generation is 1500M filling the max 2G it can use (your survivor space is empty but low, they probably too low to get any object from Eden space.
You should try to increase maximum heap size, if you still have issue you will need to monitor your memory usage to check if you don't have any leaks or some process requesting too much new object while the memory usage is already high.
Upvotes: 2