Mercurial > hg > truffle
view test/gc/metaspace/TestMetaspaceMemoryPools.java @ 8825:dbd5837b342f
8000754: NPG: Implement a MemoryPool MXBean for Metaspace
Reviewed-by: jmasa, stefank
author | ehelin |
---|---|
date | Fri, 22 Mar 2013 16:10:01 +0100 |
parents | |
children |
line wrap: on
line source
import java.util.List; import java.lang.management.ManagementFactory; import java.lang.management.MemoryManagerMXBean; import java.lang.management.MemoryPoolMXBean; import java.lang.management.MemoryUsage; /* @test TestMetaspaceMemoryPools * @bug 8000754 * @summary Tests that two MemoryPoolMXBeans are created, one for metaspace and * one for class metaspace, is created and that a MemoryManagerMXBean * is created. * @run main/othervm TestMetaspaceMemoryPools defined undefined * @run main/othervm -XX:-UseCompressedKlassPointers TestMetaspaceMemoryPools undefined undefined * @run main/othervm -XX:-UseCompressedKlassPointers -XX:MaxMetaspaceSize=60m TestMetaspaceMemoryPools undefined defined */ public class TestMetaspaceMemoryPools { public static void main(String[] args) { boolean isClassMetaspaceMaxDefined = args[0].equals("defined"); boolean isMetaspaceMaxDefined = args[1].equals("defined"); verifyThatMetaspaceMemoryManagerExists(); verifyMemoryPool(getMemoryPool("Class Metaspace"), isClassMetaspaceMaxDefined); verifyMemoryPool(getMemoryPool("Metaspace"), isMetaspaceMaxDefined); } private static void verifyThatMetaspaceMemoryManagerExists() { List<MemoryManagerMXBean> managers = ManagementFactory.getMemoryManagerMXBeans(); for (MemoryManagerMXBean manager : managers) { if (manager.getName().equals("MetaspaceManager")) { return; } } throw new RuntimeException("Expected to find a metaspace memory manager"); } private static MemoryPoolMXBean getMemoryPool(String name) { List<MemoryPoolMXBean> pools = ManagementFactory.getMemoryPoolMXBeans(); for (MemoryPoolMXBean pool : pools) { if (pool.getName().equals(name)) { return pool; } } throw new RuntimeException("Expected to find a memory pool with name " + name); } private static void verifyMemoryPool(MemoryPoolMXBean pool, boolean isMaxDefined) { MemoryUsage mu = pool.getUsage(); assertDefined(mu.getInit(), "init"); assertDefined(mu.getUsed(), "used"); assertDefined(mu.getCommitted(), "committed"); if (isMaxDefined) { assertDefined(mu.getMax(), "max"); } else { assertUndefined(mu.getMax(), "max"); } } private static void assertDefined(long value, String name) { assertTrue(value != -1, "Expected " + name + " to be defined"); } private static void assertUndefined(long value, String name) { assertTrue(value == -1, "Expected " + name + " to be undefined"); } private static void assertTrue(boolean condition, String msg) { if (!condition) { throw new RuntimeException(msg); } } }