49 * @key randomness
50 * @requires vm.gc.Shenandoah
51 * @library /test/lib
52 * @modules java.base/java.lang:open
53 * java.management
54 *
55 * @run main/othervm -Xmx256m -Xlog:gc+stats -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
56 * -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive -XX:StringDeduplicationAgeThreshold=3
57 * TestStringDedup
58 *
59 * @run main/othervm -Xmx256m -Xlog:gc+stats -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
60 * -XX:+UseShenandoahGC -XX:StringDeduplicationAgeThreshold=3
61 * TestStringDedup
62 *
63 * @run main/othervm -Xmx256m -Xlog:gc+stats -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
64 * -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact -XX:StringDeduplicationAgeThreshold=3
65 * TestStringDedup
66 */
67
68 /*
69 * @test id=iu
70 * @summary Test Shenandoah string deduplication implementation
71 * @key randomness
72 * @requires vm.gc.Shenandoah
73 * @library /test/lib
74 * @modules java.base/java.lang:open
75 * java.management
76 *
77 * @run main/othervm -Xmx256m -Xlog:gc+stats -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
78 * -XX:+UseShenandoahGC -XX:ShenandoahGCMode=iu -XX:StringDeduplicationAgeThreshold=3
79 * TestStringDedup
80 *
81 * @run main/othervm -Xmx256m -Xlog:gc+stats -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
82 * -XX:+UseShenandoahGC -XX:ShenandoahGCMode=iu -XX:ShenandoahGCHeuristics=aggressive -XX:StringDeduplicationAgeThreshold=3
83 * TestStringDedup
84 */
85
86 import java.lang.reflect.*;
87 import java.util.*;
88 import jdk.test.lib.Utils;
89
90 public class TestStringDedup {
91 private static Field valueField;
92
93 private static final int UniqueStrings = 20;
94 // How many GC cycles are needed to complete deduplication.
95 private static final int GCCount = Integer.getInteger("GCCount", 3);
96
97 static {
98 try {
99 valueField = String.class.getDeclaredField("value");
100 valueField.setAccessible(true);
101 } catch (Exception e) {
102 throw new RuntimeException(e);
|
49 * @key randomness
50 * @requires vm.gc.Shenandoah
51 * @library /test/lib
52 * @modules java.base/java.lang:open
53 * java.management
54 *
55 * @run main/othervm -Xmx256m -Xlog:gc+stats -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
56 * -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive -XX:StringDeduplicationAgeThreshold=3
57 * TestStringDedup
58 *
59 * @run main/othervm -Xmx256m -Xlog:gc+stats -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
60 * -XX:+UseShenandoahGC -XX:StringDeduplicationAgeThreshold=3
61 * TestStringDedup
62 *
63 * @run main/othervm -Xmx256m -Xlog:gc+stats -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
64 * -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact -XX:StringDeduplicationAgeThreshold=3
65 * TestStringDedup
66 */
67
68 /*
69 * @test id=generational
70 * @summary Test Shenandoah string deduplication implementation
71 * @key randomness
72 * @requires vm.gc.Shenandoah
73 * @library /test/lib
74 * @modules java.base/java.lang:open
75 * java.management
76 *
77 * @run main/othervm -Xmx256m -Xlog:gc+stats -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
78 * -XX:+UseShenandoahGC -XX:ShenandoahGCMode=generational -XX:StringDeduplicationAgeThreshold=3
79 * TestStringDedup
80 */
81
82 import java.lang.reflect.*;
83 import java.util.*;
84 import jdk.test.lib.Utils;
85
86 public class TestStringDedup {
87 private static Field valueField;
88
89 private static final int UniqueStrings = 20;
90 // How many GC cycles are needed to complete deduplication.
91 private static final int GCCount = Integer.getInteger("GCCount", 3);
92
93 static {
94 try {
95 valueField = String.class.getDeclaredField("value");
96 valueField.setAccessible(true);
97 } catch (Exception e) {
98 throw new RuntimeException(e);
|