Hello sitakanta2006
Some of the reasons: are
- Heap Space exhaustion
- Large Object allocation
-A high allocation rate in the application
I have increased the java heap too 38gb from 28gb. Also tuned the InitiatingHeapOccupancyPercent to 30 and MaxGCPauseMillis=300 ms but still I am seeing Full GC.
Hello Sitakanta!
I will not set 'MaxGCPauseMillis' JVM flag. Most of times it results in counter productive behaviour.
a. You can consider playing with the following G1 GC flags to tune it further.
b. Here is a free youTube video talk on GC tuning. It share high level general tips for GC tuning.
c. If you want learn more in-depth about GC tuning strategies, tips & techniques, you may enroll in this online JVM Performance Masterclass.
d. Signifcant number of your long pauses are triggered because of following two types of GC events as pointed out by GCeasy tool:
1. G1_EVACUATION_PAUSE
2. FULL_GC_ALLOCATION_FAILURE
Here is the recommendations given by the tool to address these two pauses:
12 min 25 sec 953 ms of GC pause time is triggered by 'G1_EVACUATION_PAUSE' event. This GC is triggered when copying live objects from one set of regions to another set of regions. When Young generation regions are only copied then Young GC is triggered. When both Young + Tenured regions are copied, Mixed GC is triggered..
5 min 12 sec 590 ms of GC pause time is triggered by 'FULL_GC_ALLOCATION_FAILURE' event. Full GC - Allocation failures happen for two reasons:
1. Application is creating too many objects that can't be reclaimed quickly enough.
2. When heap is fragmented, direct allocations in the Old generation may fail even when there is a lot of free space..
Edit your Comment