(original) (raw)
= Reference CAS induces GC store barrier even on failure This is a rough estimate for the performance impact of: https://bugs.openjdk.java.net/browse/JDK-8019968 The tests are done on 4x10x2 Xeon (Westmere-EX), Solaris 11 x86_64, jdk-dev @ 2015-07-22, plus patches. We run in six modes, aggregated in three groups: a) -XX:+UseParallelGC -XX:+UseParallelGC -XX:+UseNewCode b) -XX:+UseParallelGC -XX:+UseCondCardMark -XX:+UseParallelGC -XX:+UseCondCardMark -XX:+UseNewCode c) -XX:+UseG1GC -XX:+UseG1GC -XX:+UseNewCode All three groups stress different GC collector modes. Our hypothesis is that the change should help a lot in the case (a), where the stray stores into card mark table make the store barrier very heavy-weight. == Benchmarks: @Warmup(iterations = 10, time = 1, timeUnit = TimeUnit.SECONDS) @Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS) @Fork(3) @BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.NANOSECONDS) @State(Scope.Benchmark) public class CASToNull { Object tombstone; AtomicReference