test/runtime/NMT/VirtualAllocTestType.java

changeset 7075
ac12996df59b
parent 5586
5fd8e2fbafd4
child 7110
6640f982c1be
equal deleted inserted replaced
7074:833b0f92429a 7075:ac12996df59b
1 /* 1 /*
2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
24 /* 24 /*
25 * @test 25 * @test
26 * @summary Test Reserve/Commit/Uncommit/Release of virtual memory and that we track it correctly 26 * @summary Test Reserve/Commit/Uncommit/Release of virtual memory and that we track it correctly
27 * @key nmt jcmd 27 * @key nmt jcmd
28 * @library /testlibrary /testlibrary/whitebox 28 * @library /testlibrary /testlibrary/whitebox
29 * @ignore
29 * @build VirtualAllocTestType 30 * @build VirtualAllocTestType
30 * @run main ClassFileInstaller sun.hotspot.WhiteBox 31 * @run main ClassFileInstaller sun.hotspot.WhiteBox
31 * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:NativeMemoryTracking=detail VirtualAllocTestType 32 * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:NativeMemoryTracking=detail VirtualAllocTestType
32 */ 33 */
33 34
52 } else { 53 } else {
53 System.out.println("NMT detail support not detected."); 54 System.out.println("NMT detail support not detected.");
54 } 55 }
55 56
56 addr = wb.NMTReserveMemory(reserveSize); 57 addr = wb.NMTReserveMemory(reserveSize);
57 mergeData();
58 pb.command(new String[] { JDKToolFinder.getJDKTool("jcmd"), pid, "VM.native_memory", "detail"}); 58 pb.command(new String[] { JDKToolFinder.getJDKTool("jcmd"), pid, "VM.native_memory", "detail"});
59 59
60 output = new OutputAnalyzer(pb.start()); 60 output = new OutputAnalyzer(pb.start());
61 output.shouldContain("Test (reserved=256KB, committed=0KB)"); 61 output.shouldContain("Test (reserved=256KB, committed=0KB)");
62 if (has_nmt_detail) { 62 if (has_nmt_detail) {
63 output.shouldMatch("\\[0x[0]*" + Long.toHexString(addr) + " - 0x[0]*" + Long.toHexString(addr + reserveSize) + "\\] reserved 256KB for Test"); 63 output.shouldMatch("\\[0x[0]*" + Long.toHexString(addr) + " - 0x[0]*" + Long.toHexString(addr + reserveSize) + "\\] reserved 256KB for Test");
64 } 64 }
65 65
66 wb.NMTCommitMemory(addr, commitSize); 66 wb.NMTCommitMemory(addr, commitSize);
67 67
68 mergeData();
69 68
70 output = new OutputAnalyzer(pb.start()); 69 output = new OutputAnalyzer(pb.start());
71 output.shouldContain("Test (reserved=256KB, committed=128KB)"); 70 output.shouldContain("Test (reserved=256KB, committed=128KB)");
72 if (has_nmt_detail) { 71 if (has_nmt_detail) {
73 output.shouldMatch("\\[0x[0]*" + Long.toHexString(addr) + " - 0x[0]*" + Long.toHexString(addr + commitSize) + "\\] committed 128KB"); 72 output.shouldMatch("\\[0x[0]*" + Long.toHexString(addr) + " - 0x[0]*" + Long.toHexString(addr + commitSize) + "\\] committed 128KB");
74 } 73 }
75 74
76 wb.NMTUncommitMemory(addr, commitSize); 75 wb.NMTUncommitMemory(addr, commitSize);
77 76
78 mergeData();
79 77
80 output = new OutputAnalyzer(pb.start()); 78 output = new OutputAnalyzer(pb.start());
81 output.shouldContain("Test (reserved=256KB, committed=0KB)"); 79 output.shouldContain("Test (reserved=256KB, committed=0KB)");
82 output.shouldNotMatch("\\[0x[0]*" + Long.toHexString(addr) + " - 0x[0]*" + Long.toHexString(addr + commitSize) + "\\] committed"); 80 output.shouldNotMatch("\\[0x[0]*" + Long.toHexString(addr) + " - 0x[0]*" + Long.toHexString(addr + commitSize) + "\\] committed");
83 81
84 wb.NMTReleaseMemory(addr, reserveSize); 82 wb.NMTReleaseMemory(addr, reserveSize);
85 mergeData();
86 83
87 output = new OutputAnalyzer(pb.start()); 84 output = new OutputAnalyzer(pb.start());
88 output.shouldNotContain("Test (reserved="); 85 output.shouldNotContain("Test (reserved=");
89 output.shouldNotMatch("\\[0x[0]*" + Long.toHexString(addr) + " - 0x[0]*" + Long.toHexString(addr + reserveSize) + "\\] reserved"); 86 output.shouldNotMatch("\\[0x[0]*" + Long.toHexString(addr) + " - 0x[0]*" + Long.toHexString(addr + reserveSize) + "\\] reserved");
90 } 87 }
91
92 public static void mergeData() throws Exception {
93 // Use WB API to ensure that all data has been merged before we continue
94 if (!wb.NMTWaitForDataMerge()) {
95 throw new Exception("Call to WB API NMTWaitForDataMerge() failed");
96 } 88 }
97 }
98 }

mercurial