< prev index next >
test/gc/metaspace/TestPerfCountersAndMemoryPools.java
Print this page
rev 10588 : 8151460: Metaspace counters can have inconsistent values
Reviewed-by:
rev 10589 : [mq]: meta-rev
@@ -34,18 +34,18 @@
* @summary Tests that a MemoryPoolMXBeans and PerfCounters for metaspace
* report the same data.
* @modules java.base/sun.misc
* java.management
* jdk.jvmstat/sun.jvmstat.monitor
- * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-UseCompressedOops -XX:-UseCompressedKlassPointers -XX:+UseSerialGC -XX:+UsePerfData -Xint TestPerfCountersAndMemoryPools
- * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+UseCompressedOops -XX:+UseCompressedKlassPointers -XX:+UseSerialGC -XX:+UsePerfData -Xint TestPerfCountersAndMemoryPools
+ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-UseCompressedOops -XX:-UseCompressedClassPointers -XX:+UseSerialGC -XX:+UsePerfData -Xint TestPerfCountersAndMemoryPools
+ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+UseCompressedOops -XX:+UseCompressedClassPointers -XX:+UseSerialGC -XX:+UsePerfData -Xint TestPerfCountersAndMemoryPools
*/
public class TestPerfCountersAndMemoryPools {
public static void main(String[] args) throws Exception {
checkMemoryUsage("Metaspace", "sun.gc.metaspace");
- if (InputArguments.contains("-XX:+UseCompressedKlassPointers") && Platform.is64bit()) {
+ if (InputArguments.contains("-XX:+UseCompressedClassPointers") && Platform.is64bit()) {
checkMemoryUsage("Compressed Class Space", "sun.gc.compressedclassspace");
}
}
private static MemoryPoolMXBean getMemoryPool(String memoryPoolName) {
@@ -69,17 +69,21 @@
getCapacity(perfNS);
getUsed(perfNS);
pool.getUsage().getInit();
pool.getUsage().getUsed();
pool.getUsage().getCommitted();
- assertEQ(1L, 1L);
+ assertEQ(1L, 1L, "Make assert load");
// Must do a GC to update performance counters
System.gc();
- assertEQ(getMinCapacity(perfNS), pool.getUsage().getInit());
- assertEQ(getUsed(perfNS), pool.getUsage().getUsed());
- assertEQ(getCapacity(perfNS), pool.getUsage().getCommitted());
+ assertEQ(getMinCapacity(perfNS), pool.getUsage().getInit(), "MinCapacity out of sync");
+
+ // Adding a second GC due to metadata allocations caused by getting the
+ // initial size from the pool. This is needed when running with -Xcomp.
+ System.gc();
+ assertEQ(getUsed(perfNS), pool.getUsage().getUsed(), "Used out of sync");
+ assertEQ(getCapacity(perfNS), pool.getUsage().getCommitted(), "Committed out of sync");
}
private static long getMinCapacity(String ns) throws Exception {
return PerfCounters.findByName(ns + ".minCapacity").longValue();
}
< prev index next >