package com.tamingtext.util; import java.lang.management.ManagementFactory; import java.lang.management.MemoryPoolMXBean; import java.lang.management.MemoryUsage; import java.util.ArrayList; import java.util.List; public class MemoryStatus { static String[] units = { "Bytes", "KBytes", "MBytes", "GBytes" }; List<MemoryPoolMXBean> memoryBeans; public MemoryStatus() { memoryBeans = ManagementFactory.getMemoryPoolMXBeans(); } public void dumpMemory(String title) { System.err.println("----------" + title + "----------"); double total = 0; for (MemoryPoolMXBean m: memoryBeans) { MemoryUsage u = m.getUsage(); double used = u.getUsed(); total += used; System.err.println(m.getName() + " " + toMemoryString(used)); } System.err.println("Total " + toMemoryString(total)); System.err.println("---------------------------------"); } private String toMemoryString(double bytes) { int pos = 0; while (bytes > 1024) { pos++; bytes = bytes / 1024; } return String.format("%2.2f", bytes) + " " + units[pos]; } public static void main(String[] args) { MemoryStatus stat = new MemoryStatus(); stat.dumpMemory("before"); Object[] o = new Object[100000]; for (int i=0; i < o.length; i++) { o[i] = new String("booga"); } stat.dumpMemory("after"); } }