In
many Cases , we see Out Of Memory Issues When Working with Java
Applications on the Web logic or some other Servers.
“GC
overhead limit exceeded” is generally thrown by the Garbage
Collectors that we use for the JVM. This is generally thrown by
serial or parallel collectors.
The
issue comes when more amount of time is spent in doing the Garabage
Collection and very less than 2% of the heap is recovered.
This
may be due to applications that are running very long time or may be
due to threads that are struck. Due to these sort of threads ,the
objects that are loaded are not reclaimed and are hold-ed by these
struck threads for a long time
The
serial or parallel collectors throw this exception and this feature
is designed to prevent applications from running for an extended
period of time while making little or no progress because the heap is
too small. If necessary, this feature can be disabled by adding the
option -XX:-UseGCOverheadLimit to the command line.
If
the new generation size is explicitly defined with JVM options,
decrease the size or remove the relevant JVM options entirely to
un-constrain the JVM and provide more space in the old generation for
long lived objects.
If
there is unintended object retention , we need to check code for
changes If the retention looks normal, and it is a load issue, the
heap size would need to be increased.
Note
The
New Generation Size is specified by -XX:NewSize=n
Set
this value to a multiple of 1024 that is greater than 1MB. As a
general rule, set -XX:NewSize to be one-fourth the size of the
maximum heap size. Increase the value of this option for larger
numbers of short-lived objects.
Be
sure to increase the New generation as you increase the number of
processors.
To
find what values were given to the JVM use jmap like
#$
Jmap 9977
Heap
Configuration:
MinHeapFreeRatio
= 40
MaxHeapFreeRatio
= 70
MaxHeapSize
= 268435456 (256.0MB)
NewSize
= 1048576 (1.0MB)
MaxNewSize
= 4294901760 (4095.9375MB)
OldSize
= 4194304 (4.0MB)
NewRatio
= 8
SurvivorRatio
= 8
PermSize
= 16777216 (16.0MB)
MaxPermSize
= 134217728 (128.0MB)
More
To Come , Happy learning :-)