test/hotspot/jtreg/gc/shenandoah/TestStringDedupStress.java
author chegar
Thu, 17 Oct 2019 20:54:25 +0100
branchdatagramsocketimpl-branch
changeset 58679 9c3209ff7550
parent 58678 9cf78a70fa4f
parent 55606 78a2b1bb15cf
permissions -rw-r--r--
datagramsocketimpl-branch: merge with default
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
52925
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
     1
/*
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
     2
 * Copyright (c) 2017, 2018, Red Hat, Inc. All rights reserved.
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
     3
 *
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
     4
 * This code is free software; you can redistribute it and/or modify it
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
     5
 * under the terms of the GNU General Public License version 2 only, as
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
     6
 * published by the Free Software Foundation.
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
     7
 *
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
     8
 * This code is distributed in the hope that it will be useful, but WITHOUT
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
     9
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
    10
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
    11
 * version 2 for more details (a copy is included in the LICENSE file that
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
    12
 * accompanied this code).
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
    13
 *
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License version
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
    15
 * 2 along with this work; if not, write to the Free Software Foundation,
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
    16
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
    17
 *
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
    18
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
    19
 * or visit www.oracle.com if you need additional information or have any
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
    20
 * questions.
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
    21
 *
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
    22
 */
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
    23
55606
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    24
/*
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    25
 * @test TestStringDedupStress
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    26
 * @summary Test Shenandoah string deduplication implementation
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    27
 * @key gc
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    28
 * @requires vm.gc.Shenandoah & !vm.graal.enabled
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    29
 * @library /test/lib
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    30
 * @modules java.base/jdk.internal.misc:open
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    31
 * @modules java.base/java.lang:open
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    32
 *          java.management
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    33
 *
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    34
 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    35
 *      -XX:+UseShenandoahGC -XX:ShenandoahGCMode=passive
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    36
 *      -XX:+ShenandoahDegeneratedGC
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    37
 *      TestStringDedupStress
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    38
 *
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    39
 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    40
 *      -XX:+UseShenandoahGC -XX:ShenandoahGCMode=passive
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    41
 *      -XX:-ShenandoahDegeneratedGC
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    42
 *      TestStringDedupStress
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    43
 */
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    44
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    45
/*
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    46
 * @test TestStringDedupStress
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    47
 * @summary Test Shenandoah string deduplication implementation
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    48
 * @key gc
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    49
 * @requires vm.gc.Shenandoah & !vm.graal.enabled
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    50
 * @library /test/lib
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    51
 * @modules java.base/jdk.internal.misc:open
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    52
 * @modules java.base/java.lang:open
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    53
 *          java.management
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    54
 *
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    55
 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    56
 *      -XX:+UseShenandoahGC
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    57
 *      -DtargetStrings=3000000
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    58
 *      TestStringDedupStress
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    59
 *
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    60
 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    61
 *      -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    62
 *      -DtargetStrings=2000000
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    63
 *      TestStringDedupStress
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    64
 *
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    65
 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    66
 *      -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    67
 *      -XX:+ShenandoahOOMDuringEvacALot
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    68
 *      -DtargetStrings=2000000
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    69
 *      TestStringDedupStress
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    70
 *
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    71
 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    72
 *      -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    73
 *      TestStringDedupStress
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    74
 *
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    75
 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    76
 *      -XX:+UseShenandoahGC
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    77
 *      -XX:ShenandoahUpdateRefsEarly=off
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    78
 *      -DtargetStrings=3000000
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    79
 *      TestStringDedupStress
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    80
 *
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    81
 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    82
 *      -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    83
 *      -XX:ShenandoahUpdateRefsEarly=off
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    84
 *      -DtargetStrings=2000000
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    85
 *      TestStringDedupStress
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    86
 *
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    87
 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    88
 *      -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    89
 *      -XX:ShenandoahUpdateRefsEarly=off
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    90
 *      -DtargetStrings=2000000
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    91
 *      TestStringDedupStress
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    92
 *
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    93
 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    94
 *      -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    95
 *      -XX:ShenandoahUpdateRefsEarly=off -XX:+ShenandoahOOMDuringEvacALot
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    96
 *      -DtargetStrings=2000000
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    97
 *      TestStringDedupStress
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    98
 */
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
    99
52925
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   100
 /*
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   101
 * @test TestStringDedupStress
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   102
 * @summary Test Shenandoah string deduplication implementation
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   103
 * @key gc
54777
206afa6372ae 8223427: [TESTBUG] Disable JTReg Shenandoah tests when Graal is enabled
pli
parents: 54749
diff changeset
   104
 * @requires vm.gc.Shenandoah & !vm.graal.enabled
52925
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   105
 * @library /test/lib
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   106
 * @modules java.base/jdk.internal.misc:open
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   107
 * @modules java.base/java.lang:open
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   108
 *          java.management
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   109
 *
55606
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
   110
 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
   111
 *      -XX:+UseShenandoahGC -XX:ShenandoahGCMode=traversal
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
   112
 *      TestStringDedupStress
52925
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   113
 *
55606
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
   114
 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
   115
 *      -XX:+UseShenandoahGC -XX:ShenandoahGCMode=traversal -XX:ShenandoahGCHeuristics=aggressive
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
   116
 *      -DtargetStrings=2000000
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
   117
 *      TestStringDedupStress
52925
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   118
 *
55606
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
   119
 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
   120
 *      -XX:+UseShenandoahGC -XX:ShenandoahGCMode=traversal
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
   121
 *      -XX:+ShenandoahOOMDuringEvacALot
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
   122
 *      -DtargetStrings=2000000
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
   123
 *      TestStringDedupStress
52925
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   124
 *
55606
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
   125
 * @run main/othervm -Xmx1g -Xlog:gc+stats -Xlog:gc -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
   126
 *      -XX:+UseShenandoahGC -XX:ShenandoahGCMode=traversal -XX:ShenandoahGCHeuristics=aggressive
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
   127
 *      -XX:+ShenandoahOOMDuringEvacALot
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
   128
 *      -DtargetStrings=2000000
78a2b1bb15cf 8227327: Shenandoah: Faster and more parallel tests
shade
parents: 55594
diff changeset
   129
 *      TestStringDedupStress
52925
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   130
 */
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   131
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   132
import java.lang.management.*;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   133
import java.lang.reflect.*;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   134
import java.util.*;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   135
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   136
import sun.misc.*;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   137
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   138
public class TestStringDedupStress {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   139
    private static Field valueField;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   140
    private static Unsafe unsafe;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   141
54749
98558b7544c7 8223447: Stabilize gc/shenandoah/TestStringDedupStress test
shade
parents: 52925
diff changeset
   142
    private static final int TARGET_STRINGS = Integer.getInteger("targetStrings", 2_500_000);
52925
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   143
    private static final long MAX_REWRITE_GC_CYCLES = 6;
54749
98558b7544c7 8223447: Stabilize gc/shenandoah/TestStringDedupStress test
shade
parents: 52925
diff changeset
   144
    private static final long MAX_REWRITE_TIME = 30*1000; // ms
52925
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   145
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   146
    private static final int UNIQUE_STRINGS = 20;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   147
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   148
    static {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   149
        try {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   150
            Field field = Unsafe.class.getDeclaredField("theUnsafe");
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   151
            field.setAccessible(true);
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   152
            unsafe = (Unsafe) field.get(null);
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   153
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   154
            valueField = String.class.getDeclaredField("value");
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   155
            valueField.setAccessible(true);
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   156
        } catch (Exception e) {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   157
            throw new RuntimeException(e);
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   158
        }
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   159
    }
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   160
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   161
    private static Object getValue(String string) {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   162
        try {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   163
            return valueField.get(string);
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   164
        } catch (Exception e) {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   165
            throw new RuntimeException(e);
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   166
        }
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   167
    }
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   168
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   169
    static class StringAndId {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   170
        private String str;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   171
        private int id;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   172
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   173
        public StringAndId(String str, int id) {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   174
            this.str = str;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   175
            this.id = id;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   176
        }
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   177
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   178
        public String str() {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   179
            return str;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   180
        }
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   181
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   182
        public int id() {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   183
            return id;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   184
        }
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   185
    }
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   186
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   187
    // Generate uniqueStrings number of strings
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   188
    private static void generateStrings(ArrayList<StringAndId> strs, int uniqueStrings) {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   189
        Random rn = new Random();
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   190
        for (int u = 0; u < uniqueStrings; u++) {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   191
            int n = rn.nextInt(uniqueStrings);
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   192
            strs.add(new StringAndId("Unique String " + n, n));
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   193
        }
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   194
    }
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   195
54749
98558b7544c7 8223447: Stabilize gc/shenandoah/TestStringDedupStress test
shade
parents: 52925
diff changeset
   196
    private static int verifyDedupString(ArrayList<StringAndId> strs) {
98558b7544c7 8223447: Stabilize gc/shenandoah/TestStringDedupStress test
shade
parents: 52925
diff changeset
   197
        Map<Object, StringAndId> seen = new HashMap<>(TARGET_STRINGS*2);
52925
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   198
        int total = 0;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   199
        int dedup = 0;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   200
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   201
        for (StringAndId item : strs) {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   202
            total++;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   203
            StringAndId existingItem = seen.get(getValue(item.str()));
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   204
            if (existingItem == null) {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   205
                seen.put(getValue(item.str()), item);
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   206
            } else {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   207
                if (item.id() != existingItem.id() ||
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   208
                        !item.str().equals(existingItem.str())) {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   209
                    System.out.println("StringDedup error:");
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   210
                    System.out.println("id: " + item.id() + " != " + existingItem.id());
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   211
                    System.out.println("or String: " + item.str() + " != " + existingItem.str());
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   212
                    throw new RuntimeException("StringDedup Test failed");
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   213
                } else {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   214
                    dedup++;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   215
                }
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   216
            }
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   217
        }
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   218
        System.out.println("Dedup: " + dedup + "/" + total + " unique: " + (total - dedup));
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   219
        return (total - dedup);
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   220
    }
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   221
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   222
    static volatile ArrayList<StringAndId> astrs = new ArrayList<>();
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   223
    static GarbageCollectorMXBean gcCycleMBean;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   224
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   225
    public static void main(String[] args) {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   226
        Random rn = new Random();
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   227
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   228
        for (GarbageCollectorMXBean bean : ManagementFactory.getGarbageCollectorMXBeans()) {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   229
            if ("Shenandoah Cycles".equals(bean.getName())) {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   230
                gcCycleMBean = bean;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   231
                break;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   232
            }
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   233
        }
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   234
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   235
        if (gcCycleMBean == null) {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   236
            throw new RuntimeException("Can not find Shenandoah GC cycle mbean");
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   237
        }
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   238
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   239
        // Generate roughly TARGET_STRINGS strings, only UNIQUE_STRINGS are unique
54749
98558b7544c7 8223447: Stabilize gc/shenandoah/TestStringDedupStress test
shade
parents: 52925
diff changeset
   240
        int genIters = TARGET_STRINGS / UNIQUE_STRINGS;
98558b7544c7 8223447: Stabilize gc/shenandoah/TestStringDedupStress test
shade
parents: 52925
diff changeset
   241
        for (int index = 0; index < genIters; index++) {
52925
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   242
            generateStrings(astrs, UNIQUE_STRINGS);
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   243
        }
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   244
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   245
        long cycleBeforeRewrite = gcCycleMBean.getCollectionCount();
54749
98558b7544c7 8223447: Stabilize gc/shenandoah/TestStringDedupStress test
shade
parents: 52925
diff changeset
   246
        long timeBeforeRewrite = System.currentTimeMillis();
52925
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   247
54749
98558b7544c7 8223447: Stabilize gc/shenandoah/TestStringDedupStress test
shade
parents: 52925
diff changeset
   248
        long loop = 1;
98558b7544c7 8223447: Stabilize gc/shenandoah/TestStringDedupStress test
shade
parents: 52925
diff changeset
   249
        while (true) {
52925
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   250
            int arrSize = astrs.size();
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   251
            int index = rn.nextInt(arrSize);
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   252
            StringAndId item = astrs.get(index);
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   253
            int n = rn.nextInt(UNIQUE_STRINGS);
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   254
            item.str = "Unique String " + n;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   255
            item.id = n;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   256
54749
98558b7544c7 8223447: Stabilize gc/shenandoah/TestStringDedupStress test
shade
parents: 52925
diff changeset
   257
            if (loop++ % 1000 == 0) {
52925
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   258
                // enough GC cycles for rewritten strings to be deduplicated
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   259
                if (gcCycleMBean.getCollectionCount() - cycleBeforeRewrite >= MAX_REWRITE_GC_CYCLES) {
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   260
                    break;
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   261
                }
54749
98558b7544c7 8223447: Stabilize gc/shenandoah/TestStringDedupStress test
shade
parents: 52925
diff changeset
   262
98558b7544c7 8223447: Stabilize gc/shenandoah/TestStringDedupStress test
shade
parents: 52925
diff changeset
   263
                // enough time is spent waiting for GC to happen
98558b7544c7 8223447: Stabilize gc/shenandoah/TestStringDedupStress test
shade
parents: 52925
diff changeset
   264
                if (System.currentTimeMillis() - timeBeforeRewrite >= MAX_REWRITE_TIME) {
98558b7544c7 8223447: Stabilize gc/shenandoah/TestStringDedupStress test
shade
parents: 52925
diff changeset
   265
                    break;
98558b7544c7 8223447: Stabilize gc/shenandoah/TestStringDedupStress test
shade
parents: 52925
diff changeset
   266
                }
52925
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   267
            }
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   268
        }
54749
98558b7544c7 8223447: Stabilize gc/shenandoah/TestStringDedupStress test
shade
parents: 52925
diff changeset
   269
        verifyDedupString(astrs);
52925
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   270
    }
9c18c9d839d3 8214259: Implementation: JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
rkennke
parents:
diff changeset
   271
}