package org.pitest.util;
import java.lang.management.GarbageCollectorMXBean;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryPoolMXBean;
import java.util.List;
import org.junit.Test;
public class MemoryMonitorTest {
@Test
public void dumpMemoryInfo() {
try {
System.out.println("\nDUMPING MEMORY INFO\n");
// Read MemoryMXBean
final MemoryMXBean memorymbean = ManagementFactory.getMemoryMXBean();
System.out.println("Heap Memory Usage: "
+ memorymbean.getHeapMemoryUsage());
System.out.println("Non-Heap Memory Usage: "
+ memorymbean.getNonHeapMemoryUsage());
// Read Garbage Collection information
final List<GarbageCollectorMXBean> gcmbeans = ManagementFactory
.getGarbageCollectorMXBeans();
for (final GarbageCollectorMXBean gcmbean : gcmbeans) {
System.out.println("\nName: " + gcmbean.getName());
System.out.println("Collection count: " + gcmbean.getCollectionCount());
System.out.println("Collection time: " + gcmbean.getCollectionTime());
System.out.println("Memory Pools: ");
final String[] memoryPoolNames = gcmbean.getMemoryPoolNames();
for (final String memoryPoolName : memoryPoolNames) {
System.out.println("\t" + memoryPoolName);
}
}
// Read Memory Pool Information
System.out.println("Memory Pools Info");
final List<MemoryPoolMXBean> mempoolsmbeans = ManagementFactory
.getMemoryPoolMXBeans();
for (final MemoryPoolMXBean mempoolmbean : mempoolsmbeans) {
System.out.println("\nName: " + mempoolmbean.getName());
System.out.println("Usage: " + mempoolmbean.getUsage());
System.out.println("Collection Usage: "
+ mempoolmbean.getCollectionUsage());
System.out.println("Peak Usage: " + mempoolmbean.getPeakUsage());
System.out.println("Type: " + mempoolmbean.getType());
System.out.println("Memory Manager Names: ");
final String[] memManagerNames = mempoolmbean.getMemoryManagerNames();
for (final String memManagerName : memManagerNames) {
System.out.println("\t" + memManagerName);
}
System.out.println("\n");
}
} catch (final Exception e) {
e.printStackTrace();
}
}
}