long startTime = _gcInfo.getStartTime();
long endTime = _gcInfo.getEndTime();
Map<String, MemoryUsage> usageBeforeGc = _gcInfo.getUsageBeforeGc();
Map<String, MemoryUsage> usageAfterGc = _gcInfo.getUsageAfterGc();
MemoryUsage before = usageBeforeGc.get(CMS_OLD_GEN);
long usedBefore = before.getUsed();
MemoryUsage after = usageAfterGc.get(CMS_OLD_GEN);
long usedAfter = after.getUsed();
long totalTime = endTime - startTime;
LOG.info("totalTime spent in GC [{0} ms] collected [{1} bytes]", totalTime, (usedBefore - usedAfter));
MemoryUsage heapMemoryUsage = _memoryMXBean.getHeapMemoryUsage();
long max = heapMemoryUsage.getMax();
long used = heapMemoryUsage.getUsed();
long upperLimit = (long) (max * _ratio);
if (used > upperLimit) {
LOG.error("----- WARNING !!!! - Heap used [{0}] over limit of [{1}], taking action to avoid an OOM error.", used,
upperLimit);
synchronized (_actions) {