Mercurial > hg > truffle
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 |
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 } |