31
32 @OutputTimeUnit(TimeUnit.NANOSECONDS)
33 @State(Scope.Thread)
34 @BenchmarkMode(Mode.AverageTime)
35 @Warmup(iterations = 3, time = 1, timeUnit = TimeUnit.SECONDS)
36 @Measurement(iterations = 3, time = 1, timeUnit = TimeUnit.SECONDS)
37 @Fork(value = 3, jvmArgs = {"-Xmx256m", "-Xms256m", "-XX:+AlwaysPreTouch"})
38 public class CleanerChurn {
39
40 @Param({"128", "256", "512", "1024", "2048"})
41 int recipFreq;
42
43 @Benchmark
44 public Object test() {
45 boolean register = ThreadLocalRandom.current().nextInt(recipFreq) == 0;
46 return new Target(register);
47 }
48
49 static class Target {
50 private static final Cleaner CLEANER = Cleaner.create();
51 public Target(boolean register) {
52 if (register) {
53 CLEANER.register(this, () -> {});
54 }
55 }
56 }
57
58 }
|
31
32 @OutputTimeUnit(TimeUnit.NANOSECONDS)
33 @State(Scope.Thread)
34 @BenchmarkMode(Mode.AverageTime)
35 @Warmup(iterations = 3, time = 1, timeUnit = TimeUnit.SECONDS)
36 @Measurement(iterations = 3, time = 1, timeUnit = TimeUnit.SECONDS)
37 @Fork(value = 3, jvmArgs = {"-Xmx256m", "-Xms256m", "-XX:+AlwaysPreTouch"})
38 public class CleanerChurn {
39
40 @Param({"128", "256", "512", "1024", "2048"})
41 int recipFreq;
42
43 @Benchmark
44 public Object test() {
45 boolean register = ThreadLocalRandom.current().nextInt(recipFreq) == 0;
46 return new Target(register);
47 }
48
49 static class Target {
50 private static final Cleaner CLEANER = Cleaner.create();
51 @SuppressWarnings("initialization")
52 public Target(boolean register) {
53 if (register) {
54 CLEANER.register(this, () -> {});
55 }
56 }
57 }
58
59 }
|