annotate test/runtime/interned/SanityTest.java @ 10374:87c64c0438fb

6976350: G1: deal with fragmentation while copying objects during GC Summary: Create G1ParGCAllocBufferContainer to contain two buffers instead of previously using one buffer, in order to hold the first priority buffer longer. Thus, when some large objects hits the value of free space left in the first priority buffer it has an alternative to fit in the second priority buffer while the first priority buffer is given more chances to try allocating smaller objects. Overall, it will improve heap space efficiency. Reviewed-by: johnc, jmasa, brutisso Contributed-by: tamao <tao.mao@oracle.com>
author tamao
date Mon, 03 Jun 2013 14:37:13 -0700
parents ede380e13960
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8850
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
1 /*
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
4 *
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
7 * published by the Free Software Foundation.
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
8 *
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
13 * accompanied this code).
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
14 *
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
18 *
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
21 * questions.
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
22 */
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
23
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
24 /*
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
25 * @test SanityTest
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
26 * @summary Sanity check of String.intern() & GC
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
27 * @library /testlibrary /testlibrary/whitebox
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
28 * @build SanityTest
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
29 * @run main ClassFileInstaller sun.hotspot.WhiteBox
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
30 * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI SanityTest
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
31 */
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
32
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
33 import java.util.*;
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
34 import sun.hotspot.WhiteBox;
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
35
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
36
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
37 public class SanityTest {
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
38 public static Object tmp;
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
39 public static void main(String... args) {
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
40
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
41 WhiteBox wb = WhiteBox.getWhiteBox();
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
42 StringBuilder sb = new StringBuilder();
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
43 sb.append("1234x"); sb.append("x56789");
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
44 String str = sb.toString();
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
45
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
46 if (wb.isInStringTable(str)) {
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
47 throw new RuntimeException("String " + str + " is already interned");
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
48 }
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
49 str.intern();
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
50 if (!wb.isInStringTable(str)) {
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
51 throw new RuntimeException("String " + str + " is not interned");
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
52 }
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
53 str = sb.toString();
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
54 wb.fullGC();
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
55 if (wb.isInStringTable(str)) {
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
56 throw new RuntimeException("String " + str + " is in StringTable even after GC");
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
57 }
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
58 }
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents:
diff changeset
59 }