22 */ 23 24 /* 25 * @test 26 * @bug 8024927 27 * @summary Testing address of compressed class pointer space as best as possible. 28 * @library /testlibrary 29 * @modules java.base/sun.misc 30 * java.management 31 */ 32 33 import jdk.test.lib.*; 34 35 public class CompressedClassPointers { 36 37 public static void smallHeapTest() throws Exception { 38 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( 39 "-XX:+UnlockDiagnosticVMOptions", 40 "-XX:SharedBaseAddress=8g", 41 "-Xmx128m", 42 "-XX:+PrintCompressedOopsMode", 43 "-XX:+VerifyBeforeGC", "-version"); 44 OutputAnalyzer output = new OutputAnalyzer(pb.start()); 45 output.shouldContain("Narrow klass base: 0x0000000000000000"); 46 output.shouldHaveExitValue(0); 47 } 48 49 public static void smallHeapTestWith3G() throws Exception { 50 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( 51 "-XX:+UnlockDiagnosticVMOptions", 52 "-XX:CompressedClassSpaceSize=3g", 53 "-Xmx128m", 54 "-XX:+PrintCompressedOopsMode", 55 "-XX:+VerifyBeforeGC", "-version"); 56 OutputAnalyzer output = new OutputAnalyzer(pb.start()); 57 output.shouldContain("Narrow klass base: 0x0000000000000000, Narrow klass shift: 3"); 58 output.shouldHaveExitValue(0); 59 } 60 61 public static void largeHeapTest() throws Exception { 62 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( 63 "-XX:+UnlockDiagnosticVMOptions", 64 "-Xmx30g", 65 "-XX:+PrintCompressedOopsMode", 66 "-XX:+VerifyBeforeGC", "-version"); 67 OutputAnalyzer output = new OutputAnalyzer(pb.start()); 68 output.shouldNotContain("Narrow klass base: 0x0000000000000000"); 69 output.shouldContain("Narrow klass shift: 0"); 70 output.shouldHaveExitValue(0); 71 } 72 73 public static void largePagesTest() throws Exception { 74 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( 75 "-XX:+UnlockDiagnosticVMOptions", 76 "-Xmx128m", 77 "-XX:+UseLargePages", 78 "-XX:+PrintCompressedOopsMode", 79 "-XX:+VerifyBeforeGC", "-version"); 80 OutputAnalyzer output = new OutputAnalyzer(pb.start()); 81 output.shouldContain("Narrow klass base:"); 82 output.shouldHaveExitValue(0); 83 } 84 85 public static void heapBaseMinAddressTest() throws Exception { 86 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( 87 "-XX:HeapBaseMinAddress=1m", 88 "-XX:+UnlockDiagnosticVMOptions", 89 "-XX:+PrintCompressedOopsMode", 90 "-version"); 91 OutputAnalyzer output = new OutputAnalyzer(pb.start()); 92 output.shouldContain("HeapBaseMinAddress must be at least"); 93 output.shouldHaveExitValue(0); 94 } 95 96 public static void sharingTest() throws Exception { 97 // Test small heaps 98 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( | 22 */ 23 24 /* 25 * @test 26 * @bug 8024927 27 * @summary Testing address of compressed class pointer space as best as possible. 28 * @library /testlibrary 29 * @modules java.base/sun.misc 30 * java.management 31 */ 32 33 import jdk.test.lib.*; 34 35 public class CompressedClassPointers { 36 37 public static void smallHeapTest() throws Exception { 38 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( 39 "-XX:+UnlockDiagnosticVMOptions", 40 "-XX:SharedBaseAddress=8g", 41 "-Xmx128m", 42 "-Xlog:gc+metaspace+init=develop", 43 "-XX:+VerifyBeforeGC", "-version"); 44 OutputAnalyzer output = new OutputAnalyzer(pb.start()); 45 output.shouldContain("Narrow klass base: 0x0000000000000000"); 46 output.shouldHaveExitValue(0); 47 } 48 49 public static void smallHeapTestWith3G() throws Exception { 50 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( 51 "-XX:+UnlockDiagnosticVMOptions", 52 "-XX:CompressedClassSpaceSize=3g", 53 "-Xmx128m", 54 "-Xlog:gc+metaspace+init=develop", 55 "-XX:+VerifyBeforeGC", "-version"); 56 OutputAnalyzer output = new OutputAnalyzer(pb.start()); 57 output.shouldContain("Narrow klass base: 0x0000000000000000, Narrow klass shift: 3"); 58 output.shouldHaveExitValue(0); 59 } 60 61 public static void largeHeapTest() throws Exception { 62 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( 63 "-XX:+UnlockDiagnosticVMOptions", 64 "-Xmx30g", 65 "-Xlog:gc+metaspace+init=develop", 66 "-XX:+VerifyBeforeGC", "-version"); 67 OutputAnalyzer output = new OutputAnalyzer(pb.start()); 68 output.shouldNotContain("Narrow klass base: 0x0000000000000000"); 69 output.shouldContain("Narrow klass shift: 0"); 70 output.shouldHaveExitValue(0); 71 } 72 73 public static void largePagesTest() throws Exception { 74 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( 75 "-XX:+UnlockDiagnosticVMOptions", 76 "-Xmx128m", 77 "-XX:+UseLargePages", 78 "-Xlog:gc+metaspace+init=develop", 79 "-XX:+VerifyBeforeGC", "-version"); 80 OutputAnalyzer output = new OutputAnalyzer(pb.start()); 81 output.shouldContain("Narrow klass base:"); 82 output.shouldHaveExitValue(0); 83 } 84 85 public static void heapBaseMinAddressTest() throws Exception { 86 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( 87 "-XX:HeapBaseMinAddress=1m", 88 "-XX:+UnlockDiagnosticVMOptions", 89 "-XX:+PrintCompressedOopsMode", 90 "-version"); 91 OutputAnalyzer output = new OutputAnalyzer(pb.start()); 92 output.shouldContain("HeapBaseMinAddress must be at least"); 93 output.shouldHaveExitValue(0); 94 } 95 96 public static void sharingTest() throws Exception { 97 // Test small heaps 98 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( |