前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >​【译】哪个版本的java性能最佳?结论可能超出你想像……

​【译】哪个版本的java性能最佳?结论可能超出你想像……

作者头像
Masutaa大师
发布2023-08-21 15:03:35
3770
发布2023-08-21 15:03:35
举报
文章被收录于专栏:Masutaa大师

众所周知,Java在不同软件版本中的性能可能存在差异,并且这种差异会受到许多因素的影响。

对于开发人员和应用程序所有者来说,他们经常会遇到一些出乎意料的有趣情况,比如最新版本的Java并不一定拥有最佳的性能

  • 编译器增强 —— 每次Java版本更新,均会对其即时编译器(JIT)进行优化升级。该编译器主要负责运行时的字节码优化,其升级优化将带来代码优化效能的提升,内存管理的改良,以及特定应用类型性能的增强。
  • 垃圾收集算法 —— 在 Java 中,垃圾收集器的职责是管理并回收无用内存,其在内存管理方面扮演着重要角色。随着Java版本的迭代升级,垃圾收集算法也在持续优化,以期提升垃圾收集效率,并最大程度降低由此产生的中断。这些优化对于内存密集型Java应用程序的性能表现产生了显著影响。
  • JVM 调整 —— 随着新版本的Java虚拟机(JVM)的发布,各个供应商都可以对其进行优化和调整。这些优化策略可能涵盖内存管理、线程处理、同步机制等环节的改良,旨在提升特定工作负载或场景下的效能。Oracle对Java 1.8所做的性能增强就是一个典型的案例。
  • 错误修复和性能增强 —— 用户经常通过反馈和实际使用情况,以帮助改进Java的新版本。这些更新主要着眼于问题修复和性能提升,旨在增强系统稳定性和整体运行效率。
  • 新功能和 AP —— 开发者可借助最新版Java的力量,提升应用程序的运行效能,其中可能包含新的功能、接口和库。这些新增内容为处理特定任务提供了更有效的方式,同时也让开发者能更好地优化他们的代码。通过运用这些新的功能和接口,开发者有望提升应用程序的整体性能。

最近,有人要求我提供一些更为迅速的证据,得出的结果真的让我大吃一惊!

为了进行评估,我在 Ampere Arm 服务器上进行了一次基础的 CPU 检测。我用的操作系统是 Oracle Linux 8,为了进行评估,我安装了最新版本的 OpenJDK 1.8、Oracle JDK 1.8、增强版的 Oracle JDK 1.8、Oracle JDK 11还有 Oracle JDK 17。

是的没错,你没看错,Oracle JDK 在这个列表中出现了两次,因为在 2022 年 10 月,Oracle 发布了增强版的 Oracle JDK 1.8,它保证能够为旧版的 JDK 1.8 应用程序提供 JDK 17 的性能。而且这个增强包已经被纳入了 Java SE 订阅和 OCI 中。

根据此次简易测试,Oracle 1.8的性能包的表现优于其他,而OpenJDK的表现位居末尾,Oracle的Performance JDK的运行速度超越了28%!

对于应用程序而言,这是一个巨大的性能飞跃!再者,Oracle的JDK 17仅滞后2%,在某些系统上甚至几乎无法察觉。鉴于Java的所有其他增强功能的优点,我将把JDK 17作为任何新应用程序的首选

需要注意的是,尽管新版本的Java通常旨在提升性能,但在某些特定情况下,有些应用程序或代码片段可能会因JVM行为或其他因素的改变而导致性能下滑。

因此,对特定应用程序进行不同版本Java的测试和基准检测是必须的,以便确定性能影响并识别出是否需要进行优化或调整。

作者:admin

译者:阮煜茜

出品:Masutaa大师

关于Masutaa

Masutaa是个互联网从业者自由协作交流平台,链接行业内TOP10%人才!目前平台上已经有将近400名互联网尖端人才,其中近70%的从业者从业年限超3年。

在这个平台上,你有机会获得远程项目,也可实现地理套利,成为数字游民!

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于Masutaa
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档