Java 17 已正式发布,新版本提供了不少新特性和功能增强。不过对于大多数项目而言,往往需要更改代码才能利用到这些新变化,但性能除外 —— 开发者只需要升级 JDK 版本,就能免费获得性能提升。
规划调度引擎 OptaPlanner 项目负责人对 JDK 17、JDK 16 和 JDK 11 的性能基准测试进行了对比,看看 Java 17 的性能提升是否值得我们去升级。
稳定的机器,没有任何其他计算要求的进程在运行。
配置 Intel® Xeon® Silver 4116 @ 2.1 GHz (12 cores total / 24 threads)
,128 GiB
RAM ,RHEL 8 x86_64
openjdk 17 2021-09-14
OpenJDK Runtime Environment (build 17+35-2724)
OpenJDK 64-Bit Server VM (build 17+35-2724, mixed mode, sharing)
启用-Xmx3840M
并明确指定垃圾回收器:
-XX:+UseG1GC
for G1GC,低延迟垃圾回收器(三个 JDK 版本的默认项)-XX:+UseParallelGC
for ParallelGC,高吞吐量垃圾回收器org.optaplanner.examples.app.GeneralOptaPlannerBenchmarkApp
,来自 OptaPlanner 8.10.0.Final
中的 optaplanner-examples
模块
每个 JDK 和每个垃圾回收器组合按顺序运行 3 次。下面的结果是这 3 次运行的平均值。
基于 OptaPlanner 用例,这些基准测试表明:
简而言之,最新的 JDK 更快,高吞吐量垃圾回收器比低延迟垃圾回收器更快。