package rfx.server.util; import java.lang.management.ManagementFactory; import java.lang.management.MemoryPoolMXBean; import java.lang.management.MemoryUsage; import java.util.List; import java.util.Timer; import java.util.TimerTask; public class MemoryManagementUtil { // http://www.concretepage.com/java/ static boolean isStarted = false; public static class MemoryUsageTask extends TimerTask { public void run() { // using getMemoryPoolMXBeans System.out.println("result of getMemoryPoolMXBeans "); List<MemoryPoolMXBean> mpmxList = ManagementFactory .getMemoryPoolMXBeans(); for (MemoryPoolMXBean pl : mpmxList) { String name = pl.getName(); System.out.println(name); MemoryUsage mu = pl.getPeakUsage(); System.out.println("---using MemoryUsage---"); // memory that can be used by JVM System.out.println(mu.getCommitted()); // memory that is being used by JVM System.out.println(mu.getUsed()); // memory which has been request initially. System.out.println(mu.getInit()); // max memory that can be requested. System.out.println(mu.getMax()); } } } public static void startMemoryUsageTask() { if (!isStarted) { Timer timer = new Timer(); timer.scheduleAtFixedRate(new MemoryUsageTask(), 1000, 10000); System.out.println("enableBenchmark = true, ShowCounterMap Thread started ..."); isStarted = true; } } }