< prev index next > test/hotspot/jtreg/gc/shenandoah/TestStringDedupStress.java
Print this page
/*
* Copyright (c) 2017, 2021, Red Hat, Inc. All rights reserved.
+ * Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
* -XX:-ShenandoahDegeneratedGC
* TestStringDedupStress
*/
/*
! * @test id=default
* @summary Test Shenandoah string deduplication implementation
* @key randomness
* @requires vm.gc.Shenandoah
* @library /test/lib
* @modules java.base/java.lang:open
* java.management
*
* @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
! * -XX:+UseShenandoahGC
* -DtargetStrings=3000000
* TestStringDedupStress
- *
- * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
- * -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
- * -DtargetStrings=2000000
- * TestStringDedupStress
- *
- * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
- * -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
- * -XX:+ShenandoahOOMDuringEvacALot
- * -DtargetStrings=2000000
- * TestStringDedupStress
- *
- * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
- * -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact
- * TestStringDedupStress
*/
! /*
! * @test id=iu
* @summary Test Shenandoah string deduplication implementation
* @key randomness
* @requires vm.gc.Shenandoah
* @library /test/lib
* @modules java.base/java.lang:open
* java.management
*
* @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
! * -XX:+UseShenandoahGC -XX:ShenandoahGCMode=iu
* TestStringDedupStress
*
* @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
! * -XX:+UseShenandoahGC -XX:ShenandoahGCMode=iu -XX:ShenandoahGCHeuristics=aggressive
* -DtargetStrings=2000000
* TestStringDedupStress
*
* @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
! * -XX:+UseShenandoahGC -XX:ShenandoahGCMode=iu
* -XX:+ShenandoahOOMDuringEvacALot
* -DtargetStrings=2000000
* TestStringDedupStress
*
* @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
! * -XX:+UseShenandoahGC -XX:ShenandoahGCMode=iu -XX:ShenandoahGCHeuristics=aggressive
- * -XX:+ShenandoahOOMDuringEvacALot
- * -DtargetStrings=2000000
* TestStringDedupStress
*/
import java.lang.management.*;
import java.lang.reflect.*;
* -XX:-ShenandoahDegeneratedGC
* TestStringDedupStress
*/
/*
! * @test id=generational
* @summary Test Shenandoah string deduplication implementation
* @key randomness
* @requires vm.gc.Shenandoah
* @library /test/lib
* @modules java.base/java.lang:open
* java.management
*
* @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
! * -XX:+UseShenandoahGC -XX:ShenandoahGCMode=generational
+ * -XX:+ShenandoahDegeneratedGC
* -DtargetStrings=3000000
* TestStringDedupStress
*/
! /*
! * @test id=default
* @summary Test Shenandoah string deduplication implementation
* @key randomness
* @requires vm.gc.Shenandoah
* @library /test/lib
* @modules java.base/java.lang:open
* java.management
*
* @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
! * -XX:+UseShenandoahGC
+ * -DtargetStrings=3000000
* TestStringDedupStress
*
* @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
! * -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
* -DtargetStrings=2000000
* TestStringDedupStress
*
* @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
! * -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
* -XX:+ShenandoahOOMDuringEvacALot
* -DtargetStrings=2000000
* TestStringDedupStress
*
* @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
! * -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact
* TestStringDedupStress
*/
import java.lang.management.*;
import java.lang.reflect.*;
public class TestStringDedupStress {
private static Field valueField;
private static final int TARGET_STRINGS = Integer.getInteger("targetStrings", 2_500_000);
private static final long MAX_REWRITE_GC_CYCLES = 6;
! private static final long MAX_REWRITE_TIME = 30*1000; // ms
private static final int UNIQUE_STRINGS = 20;
static {
try {
public class TestStringDedupStress {
private static Field valueField;
private static final int TARGET_STRINGS = Integer.getInteger("targetStrings", 2_500_000);
private static final long MAX_REWRITE_GC_CYCLES = 6;
! private static final long MAX_REWRITE_TIME_NS = 30L * 1_000_000_000L; // 30s in ns
private static final int UNIQUE_STRINGS = 20;
static {
try {
for (int index = 0; index < genIters; index++) {
generateStrings(astrs, UNIQUE_STRINGS);
}
long cycleBeforeRewrite = gcCycleMBean.getCollectionCount();
! long timeBeforeRewrite = System.currentTimeMillis();
long loop = 1;
while (true) {
int arrSize = astrs.size();
int index = rn.nextInt(arrSize);
for (int index = 0; index < genIters; index++) {
generateStrings(astrs, UNIQUE_STRINGS);
}
long cycleBeforeRewrite = gcCycleMBean.getCollectionCount();
! long timeBeforeRewriteNanos = System.nanoTime();
long loop = 1;
while (true) {
int arrSize = astrs.size();
int index = rn.nextInt(arrSize);
if (gcCycleMBean.getCollectionCount() - cycleBeforeRewrite >= MAX_REWRITE_GC_CYCLES) {
break;
}
// enough time is spent waiting for GC to happen
! if (System.currentTimeMillis() - timeBeforeRewrite >= MAX_REWRITE_TIME) {
break;
}
}
}
verifyDedupString(astrs);
if (gcCycleMBean.getCollectionCount() - cycleBeforeRewrite >= MAX_REWRITE_GC_CYCLES) {
break;
}
// enough time is spent waiting for GC to happen
! if (System.nanoTime() - timeBeforeRewriteNanos >= MAX_REWRITE_TIME_NS) {
break;
}
}
}
verifyDedupString(astrs);
< prev index next >