annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8825
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
1 import java.util.List;
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
2 import java.lang.management.ManagementFactory;
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
3 import java.lang.management.MemoryManagerMXBean;
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
4 import java.lang.management.MemoryPoolMXBean;
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
5 import java.lang.management.MemoryUsage;
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
6
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
7 /* @test TestMetaspaceMemoryPools
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
8 * @bug 8000754
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
9 * @summary Tests that two MemoryPoolMXBeans are created, one for metaspace and
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
10 * one for class metaspace, is created and that a MemoryManagerMXBean
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
11 * is created.
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
12 * @run main/othervm TestMetaspaceMemoryPools defined undefined
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
13 * @run main/othervm -XX:-UseCompressedKlassPointers TestMetaspaceMemoryPools undefined undefined
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
14 * @run main/othervm -XX:-UseCompressedKlassPointers -XX:MaxMetaspaceSize=60m TestMetaspaceMemoryPools undefined defined
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
15 */
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
16 public class TestMetaspaceMemoryPools {
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
17 public static void main(String[] args) {
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
18 boolean isClassMetaspaceMaxDefined = args[0].equals("defined");
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
19 boolean isMetaspaceMaxDefined = args[1].equals("defined");
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
20
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
21 verifyThatMetaspaceMemoryManagerExists();
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
22
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
23 verifyMemoryPool(getMemoryPool("Class Metaspace"), isClassMetaspaceMaxDefined);
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
24 verifyMemoryPool(getMemoryPool("Metaspace"), isMetaspaceMaxDefined);
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
25 }
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
26
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
27 private static void verifyThatMetaspaceMemoryManagerExists() {
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
28 List<MemoryManagerMXBean> managers = ManagementFactory.getMemoryManagerMXBeans();
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
29 for (MemoryManagerMXBean manager : managers) {
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
30 if (manager.getName().equals("MetaspaceManager")) {
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
31 return;
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
32 }
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
33 }
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
34
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
35 throw new RuntimeException("Expected to find a metaspace memory manager");
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
36 }
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
37
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
38 private static MemoryPoolMXBean getMemoryPool(String name) {
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
39 List<MemoryPoolMXBean> pools = ManagementFactory.getMemoryPoolMXBeans();
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
40 for (MemoryPoolMXBean pool : pools) {
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
41 if (pool.getName().equals(name)) {
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
42 return pool;
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
43 }
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
44 }
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
45
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
46 throw new RuntimeException("Expected to find a memory pool with name " + name);
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
47 }
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
48
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
49 private static void verifyMemoryPool(MemoryPoolMXBean pool, boolean isMaxDefined) {
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
50 MemoryUsage mu = pool.getUsage();
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
51 assertDefined(mu.getInit(), "init");
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
52 assertDefined(mu.getUsed(), "used");
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
53 assertDefined(mu.getCommitted(), "committed");
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
54
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
55 if (isMaxDefined) {
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
56 assertDefined(mu.getMax(), "max");
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
57 } else {
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
58 assertUndefined(mu.getMax(), "max");
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
59 }
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
60 }
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
61
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
62 private static void assertDefined(long value, String name) {
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
63 assertTrue(value != -1, "Expected " + name + " to be defined");
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
64 }
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
65
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
66 private static void assertUndefined(long value, String name) {
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
67 assertTrue(value == -1, "Expected " + name + " to be undefined");
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
68 }
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
69
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
70 private static void assertTrue(boolean condition, String msg) {
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
71 if (!condition) {
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
72 throw new RuntimeException(msg);
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
73 }
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
74 }
dbd5837b342f 8000754: NPG: Implement a MemoryPool MXBean for Metaspace
ehelin
parents:
diff changeset
75 }