package org.apereo.cas.monitor;
/**
* Describes the memory status of the JVM.
*
* @author Marvin S. Addison
* @since 3.5.0
*/
public class MemoryStatus extends Status {
private static final double BYTES_PER_MB = 1048510.0;
private static final double PERCENTAGE = 100.0;
/**
* JVM free memory.
*/
private long freeMemory;
/**
* JVM total memory.
*/
private long totalMemory;
/**
* Creates a new status object with the given code.
*
* @param code Status code.
* @param free JVM free memory in bytes.
* @param total JVM total memory in bytes.
* @param used the used
* @see #getCode() #getCode()
*/
public MemoryStatus(final StatusCode code, final long free, final long total, final long used) {
super(code, String.format("%.2fMB free (%.2f%%), %.2fMB used, %.2fMB total.", free / BYTES_PER_MB,
free * PERCENTAGE / (double) total,
used / BYTES_PER_MB,
total / BYTES_PER_MB));
this.freeMemory = free;
this.totalMemory = total;
}
/**
* Gets JVM free memory.
*
* @return Free memory in bytes.
*/
public long getFreeMemory() {
return this.freeMemory;
}
/**
* Gets JVM total memory.
*
* @return Max memory in bytes.
*/
public long getTotalMemory() {
return this.totalMemory;
}
}