package com.plectix.simulator.util;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
public class Memory {
private MemoryMXBean mbean = ManagementFactory.getMemoryMXBean();
private long currentHeapMemory;
private long currentNonHeapMemory;
private long currentTotalMemory;
// constructor
public Memory() {
reset();
}
public long getHeapMemoryUsage() {
return mbean.getHeapMemoryUsage().getUsed();
}
public long getNonHeapMemoryUsage() {
return mbean.getNonHeapMemoryUsage().getUsed();
}
public long getTotalMemoryUsage() {
return getHeapMemoryUsage() + getNonHeapMemoryUsage();
}
// reset
public void reset() {
currentHeapMemory = getHeapMemoryUsage();
currentNonHeapMemory = getNonHeapMemoryUsage();
currentTotalMemory = getTotalMemoryUsage();
}
public long usedHeap() {
return getHeapMemoryUsage() - currentHeapMemory;
}
public long usedNonHeap() {
return getNonHeapMemoryUsage() - currentNonHeapMemory;
}
public long usedTotal() {
return getTotalMemoryUsage() - currentTotalMemory;
}
public String getPrintToString(String s) {
return s + " : " + toString(usedHeap(), usedNonHeap(), usedTotal());
}
public void print(String s) {
System.out.println(getPrintToString(s));
}
private final String toString(long heap, long nonHeap, long total) {
return "Heap = " + heap + " Byte | NonHeap = " + nonHeap
+ " Byte | Total = " + total + " Byte";
}
}