在10月18日,官方宣布推出Java SE Subscription Enterprise Performance Pack (Enterprise Performance Pack),并宣称该企业级性能包为JDK 8用户提供了在JDK 8和JDK 17发布之间的7年间为Java带来的显著的内存管理和性能改进。这包括现代垃圾收集算法、紧凑的字符串、增强的可观察性和许多其他优化。 Java SE Subscription Enterprise Performance Pack (Enterprise Performance Pack)现已在 MyOracleSupport 上面向所有 Java SE 订阅客户和 云基础设施 (OCI) 用户免费提供。 使用企业性能包的客户将在运行于接近内存或CPU容量的JDK 8工作负载上立即看到好处。在Oracle自己的产品和云服务上进行的测试显示,高负载应用程序的内存和性能都提高了约40%。即使JDK 8应用程序没有在接近容量的情况下运行,也可以看到高达5%的性能改进。 虽然企业性能包中包含的许多改进可以通过默认选项获得,但我们建议研究文档以最大化性能并最小化内存使用。例如,要通过启用可伸缩的低延迟ZGC垃圾收集器来提高应用程序的响应能力,就需要传递-XX: UseZGC选项。
相关报告:
根据New Relic公司发布的《2022 年Java生态系统状况报告》,根据数据显示现在使用Java11 的占比最多,Java 8 紧随其后,占比46.45%。
G1是最受欢迎的GC算法
:鉴于垃圾收集(GC)在JVM性能中发挥核心作用,所以其仍是社区中讨论最多的一个话题。
New Relic的数据显示,Java 8之后,垃圾收集器的使用发生了明显变化。考虑到Java 11及更高版本的G1收集器有更新的默认值和更高的性能,所以G1受开发者欢迎并不令人惊讶。
Java 10或更早版本与Java 11或更高版本使用的GC算法的百分比
显然,出于对G1的喜爱,很多开发者才会选择抛弃Java 8。另外,在预料之中的是,其他在Java 8之后出现的实验性收集器(ZGC和Shenandoah)在生产系统中的使用量仍然很小,毕竟这两个收集器直到最近才达到生产就绪状态。
容器中的内存设置
:比较内存设置时也会出现类似的趋势,在容器中往往倾向于更小的实例。
容器内和容器外运行的内存设置堆大小的百分比
报告数据显示,只有大约80%的容器化应用程序通过-Xmx或-XX:MaxRAMPercentage标记明确要求JVM内存上限。从Java 9开始,JVM中的容器感知功能意味着,只要JVM是每个容器中唯一运行的进程,那它对应用程序来说,就不会像以前那样成为安全问题。
参考:https://blogs.oracle.com/java/post/introducing-the-java-se-subscription-enterprise-performance-pack
本文内容到此结束了, 如有收获欢迎点赞