Application Delivery Management
Application Modernization & Connectivity
CyberRes
IT Operations Management
-XX: PrintGCDetails -XX: PrintGCDateStamps -Xloggc:<file-path>
43864.961: [GC [PSYoungGen: 41920K->384K(42432K)] 128084K->87204K(129856K), 0.0129540 secs] [Times: user=0.04 sys=0.00, real=0.02 secs]
43864.974: [Full GC [PSYoungGen: 384K->0K(42432K)] [ParOldGen: 86820K->61611K(87424K)] 87204K->61611K(129856K) [PSPermGen: 43136K->43136K(43776K)], 0.1013350 secs] [Times: user=0.45 sys=0.00, real=0.10 secs]
Dcom.sun.management.jmxremote.port=xxx -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
GC time:*
*0.760 seconds on PS MarkSweep (3 collections)
*0.664 seconds on PS Scavenge (21 collections)
jstat –gc <vmid> 1000 .
Partial/Minor GC runs too often say every second.
In this case not enough memory has been allocated under "Eden" space when configuring the heap sizes. Which means GC has to run often to free up space. So a parameter of -XX:SurvivorRatio=10 would help. This is would increase memory given "Eden" space. Parameters -Xmx and -Xms can be at 500m (or more).
Partial/Minor GC runs for an extended interval of time say 3-4 seconds.
In this case a large space has been set to Young Gen. So GC has to run for a longer time in order to move through all areas of memory. This is where the IDM advice "increase the heap in small increments" comes to picture. If too large a heap is allocated, considerable time is spent in going through it to identity spaces to be freed.
Setting Parameter -XX:NewRatio=3 helps to reduce space given to Young Gen by increasing the ratio of memory given to Old Gen. By default this parater is 2 which means that "Old Gen" is twice of Young Gen.
Full GC runs too often, more than 2-3 times per 10 minutes.
In this case there is not enough space set for old gen. Consider increasing the -XX:NewRatio=3 or may be -XX:NewRatio=4
Full GC runs for extended periods of time say 5 seconds.
Visit memory allocation settings (-Xmx, -Xms) to check if they are not too large. However if this memory requirement is mandatory consider changing GC algorithm to -XX: UseConcMarkSweepGC -XX: UseParNewGC. Concurrent Mark & Sweep reduces the time interval for which the entire application is stopped.