环境准备1、JDK 版本
JKD 11openjdk 11.0.12 2021-09-15OpenJDK Runtime Environment Temurin-11.0.12+7 (build 11.0.12+7)OpenJDK 64-Bit Server VM Temurin-11.0.12+7 (build 11.0.12+7, mixed mode)JKD 16openjdk 16.0.2 2021-09-15OpenJDK Runtime Environment (build 16.0.2+7-67)OpenJDK 64-Bit Server VM (build 16.0.2+7-67, mixed mode, sharing)JKD 17openjdk 17 2021-09-15OpenJDK Runtime Environment (build 17+35-2724)OpenJDK 64-Bit Server VM (build 17+35-2724, mixed mode, sharing)硬件配置
Intel® Xeon® Silver 4116 @ 2.1 GHz (12 cores total / 24 threads)和128 GiBRAM内存,运行RHEL 8 x86_64。
JVM设置
-Xmx3840M并明确指定垃圾收集器:-XX:+UseG1GC 对于 G1GC,低延迟垃圾收集器(所有三个 JDK 中的默认值);-XX:+UseParallelGC 对于 ParallelGC,高吞吐量垃圾收集器。执行规则
每个JDK、垃圾收集器组合都按顺序依次执行 3 次。下面的执行结果是3次执行的平均值。
测试结果Java 11 (LTS) 和 Java 16 与 Java 17 (LTS)
在不同 JDK 上使用 G1GC 的每秒计算得分。
在不同 JDK 上使用 ParallelGC 的每秒计算得分。
总结
查看 3 次单独运行的原始数据(此处未显示),机器重新分配数(B1 和 B10)在一个 JDK 和 GC 上的运行之间波动很大,通常超过10%,其他数字不会受到这种不可靠性的影响。
可以以说忽略 Machine Reassignment numbers 更好。但是为了避免挑选数据的问题,这些结果和平均值确实把它们包括进来了。
Java 17 上的 G1GC 与 ParallelGC
JDK 17 下不同 GC 每秒的计算得分。
基准测试总结
平均而言,以 OptaPlanner 为例的基准测试结果表明:对于 G1GC(默认),Java 17 比 Java 11 快 8.66%,比 Java 16 快 2.41%。对于 ParallelGC,Java 17 比 Java 11 快 6.54%,比 Java 16 快 0.37%。Parallel GC 比 G1 GC 快 16.39%。结论总而言之,JDK17 的性能表现还是非常值得升级的,至少于OptaPlanner Demo 而言。
此外,这些用例最快的垃圾收集器仍然是ParallelGC, 而不是G1GC(默认)。
测试数据来源原文:
参考链接: