49 * @key gc
50 * @requires vm.gc.Shenandoah & !vm.graal.enabled
51 * @library /test/lib
52 * @modules java.base/jdk.internal.misc:open
53 * @modules java.base/java.lang:open
54 * java.management
55 *
56 * @run main/othervm -Xmx256m -Xlog:gc+stats -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
57 * -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
58 * TestStringDedup
59 *
60 * @run main/othervm -Xmx256m -Xlog:gc+stats -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
61 * -XX:+UseShenandoahGC
62 * TestStringDedup
63 *
64 * @run main/othervm -Xmx256m -Xlog:gc+stats -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
65 * -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact
66 * TestStringDedup
67 */
68
69 import java.lang.reflect.*;
70 import java.util.*;
71
72 import sun.misc.*;
73
74 public class TestStringDedup {
75 private static Field valueField;
76 private static Unsafe unsafe;
77
78 private static final int UniqueStrings = 20;
79
80 static {
81 try {
82 Field field = Unsafe.class.getDeclaredField("theUnsafe");
83 field.setAccessible(true);
84 unsafe = (Unsafe) field.get(null);
85
86 valueField = String.class.getDeclaredField("value");
87 valueField.setAccessible(true);
88 } catch (Exception e) {
|
49 * @key gc
50 * @requires vm.gc.Shenandoah & !vm.graal.enabled
51 * @library /test/lib
52 * @modules java.base/jdk.internal.misc:open
53 * @modules java.base/java.lang:open
54 * java.management
55 *
56 * @run main/othervm -Xmx256m -Xlog:gc+stats -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
57 * -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
58 * TestStringDedup
59 *
60 * @run main/othervm -Xmx256m -Xlog:gc+stats -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
61 * -XX:+UseShenandoahGC
62 * TestStringDedup
63 *
64 * @run main/othervm -Xmx256m -Xlog:gc+stats -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
65 * -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact
66 * TestStringDedup
67 */
68
69 /*
70 * @test TestStringDedup
71 * @summary Test Shenandoah string deduplication implementation
72 * @key gc
73 * @requires vm.gc.Shenandoah & !vm.graal.enabled
74 * @library /test/lib
75 * @modules java.base/jdk.internal.misc:open
76 * @modules java.base/java.lang:open
77 * java.management
78 *
79 * @run main/othervm -Xmx256m -Xlog:gc+stats -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
80 * -XX:+UseShenandoahGC -XX:ShenandoahGCMode=iu
81 * TestStringDedup
82 *
83 * @run main/othervm -Xmx256m -Xlog:gc+stats -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
84 * -XX:+UseShenandoahGC -XX:ShenandoahGCMode=iu -XX:ShenandoahGCHeuristics=aggressive
85 * TestStringDedup
86 */
87
88 import java.lang.reflect.*;
89 import java.util.*;
90
91 import sun.misc.*;
92
93 public class TestStringDedup {
94 private static Field valueField;
95 private static Unsafe unsafe;
96
97 private static final int UniqueStrings = 20;
98
99 static {
100 try {
101 Field field = Unsafe.class.getDeclaredField("theUnsafe");
102 field.setAccessible(true);
103 unsafe = (Unsafe) field.get(null);
104
105 valueField = String.class.getDeclaredField("value");
106 valueField.setAccessible(true);
107 } catch (Exception e) {
|