What does "java.lang.OutOfMemoryError: GC overhead limit exceeded" mean and how to address it?
book
Article ID: KB0074846
calendar_today
Updated On:
Products
Versions
TIBCO ActiveMatrix BusinessWorks
-
Not Applicable
-
Description
It means too much time is being spent in garbage collection: if more than 98% of the total time is spent in garbage collection and less than 2% of the heap is recovered, an "java.lang.OutOfMemoryError: GC overhead limit exceeded" will be thrown.
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. Like adding below into in the deployed engine tra file: java.extended.properties=-XX:-UseGCOverheadLimit
Issue/Introduction
What does "java.lang.OutOfMemoryError: GC overhead limit exceeded" mean and how to address it?
Resolution
The following steps are suggested to address the memory issue - both "java.lang.OutOfMemoryError: Java heap space" and "java.lang.OutOfMemoryError: GC overhead limit exceeded".
1). For the affected engine process, you can increase the "java.heap.size.max" in the deployed engine tra file to a greater value.
2). Set EnableMemorySavingMode to true in the deployed engine tra file.
3). Set the MaxJobs and FlowLimit to finite numbers (0 means infinite) or set them to smaller numbers.