57 * -XX:+UseShenandoahGC
58 * -DtargetStrings=3000000
59 * TestStringDedupStress
60 *
61 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
62 * -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
63 * -DtargetStrings=2000000
64 * TestStringDedupStress
65 *
66 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
67 * -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
68 * -XX:+ShenandoahOOMDuringEvacALot
69 * -DtargetStrings=2000000
70 * TestStringDedupStress
71 *
72 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
73 * -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact
74 * TestStringDedupStress
75 */
76
77 import java.lang.management.*;
78 import java.lang.reflect.*;
79 import java.util.*;
80
81 import sun.misc.*;
82
83 public class TestStringDedupStress {
84 private static Field valueField;
85 private static Unsafe unsafe;
86
87 private static final int TARGET_STRINGS = Integer.getInteger("targetStrings", 2_500_000);
88 private static final long MAX_REWRITE_GC_CYCLES = 6;
89 private static final long MAX_REWRITE_TIME = 30*1000; // ms
90
91 private static final int UNIQUE_STRINGS = 20;
92
93 static {
94 try {
95 Field field = Unsafe.class.getDeclaredField("theUnsafe");
96 field.setAccessible(true);
|
57 * -XX:+UseShenandoahGC
58 * -DtargetStrings=3000000
59 * TestStringDedupStress
60 *
61 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
62 * -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
63 * -DtargetStrings=2000000
64 * TestStringDedupStress
65 *
66 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
67 * -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
68 * -XX:+ShenandoahOOMDuringEvacALot
69 * -DtargetStrings=2000000
70 * TestStringDedupStress
71 *
72 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
73 * -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact
74 * TestStringDedupStress
75 */
76
77 /*
78 * @test TestStringDedupStress
79 * @summary Test Shenandoah string deduplication implementation
80 * @key gc
81 * @requires vm.gc.Shenandoah & !vm.graal.enabled
82 * @library /test/lib
83 * @modules java.base/jdk.internal.misc:open
84 * @modules java.base/java.lang:open
85 * java.management
86 *
87 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
88 * -XX:+UseShenandoahGC -XX:ShenandoahGCMode=iu
89 * TestStringDedupStress
90 *
91 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
92 * -XX:+UseShenandoahGC -XX:ShenandoahGCMode=iu -XX:ShenandoahGCHeuristics=aggressive
93 * -DtargetStrings=2000000
94 * TestStringDedupStress
95 *
96 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
97 * -XX:+UseShenandoahGC -XX:ShenandoahGCMode=iu
98 * -XX:+ShenandoahOOMDuringEvacALot
99 * -DtargetStrings=2000000
100 * TestStringDedupStress
101 *
102 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
103 * -XX:+UseShenandoahGC -XX:ShenandoahGCMode=iu -XX:ShenandoahGCHeuristics=aggressive
104 * -XX:+ShenandoahOOMDuringEvacALot
105 * -DtargetStrings=2000000
106 * TestStringDedupStress
107 */
108
109 import java.lang.management.*;
110 import java.lang.reflect.*;
111 import java.util.*;
112
113 import sun.misc.*;
114
115 public class TestStringDedupStress {
116 private static Field valueField;
117 private static Unsafe unsafe;
118
119 private static final int TARGET_STRINGS = Integer.getInteger("targetStrings", 2_500_000);
120 private static final long MAX_REWRITE_GC_CYCLES = 6;
121 private static final long MAX_REWRITE_TIME = 30*1000; // ms
122
123 private static final int UNIQUE_STRINGS = 20;
124
125 static {
126 try {
127 Field field = Unsafe.class.getDeclaredField("theUnsafe");
128 field.setAccessible(true);
|