每天,数千万的Java虚拟机(JVM)与New Relic共享它们的数据。为了创建此报告,我们对数据进行了匿名处理并对其进行了粗粒度处理,以给出我们所看到的Java生态系统的大致概述。我们还避免使用任何可能有助于攻击者和其他恶意方(否则会破坏JVM数据用户)的详细信息。
这些观察的目标是提供有关当今Java生态系统状态的一些新上下文和见解。说了这么多,我们看了以下几类:
Java 8仍然是标准
14 Total: 0.00 13 Total: 0.32 12 Total: 0.17 11 Total: 11.11 10: 0.48 9 : 0.18 8 Current: 42.02 8 Lagging: 38.63 8 Vulnerable: 3.83 7: 2.54 pre-7: 0.73 Non-LTS: 1.14
注意:我们将Java 8结果分为三个部分:
Current
Lagging
Vulnerable
Java 11(一个长期支持版本)正在逐渐普及,但是与Java 8(也包括LTS)相比,市场似乎仍然犹豫不决。值得注意的是,缺乏采用非LTS版本的情况-Java 7的使用率(2.54%)仍然是所有Java 8后非LTS版本的总和(1.14%)的两倍多。
非Oracle供应商的兴起
甲骨文现在仅占Java市场的75%。由社区主导的 AdoptOpenJDK 是第二受欢迎的供应商。我们的历史趋势数据(我们尚未发布,因为它的样本量比主要数据集要小得多)表明AdoptOpenJDK的受欢迎程度逐月上升。
特别要注意的是,在向New Relic报告的AdoptOpenJDK VM群体中,几乎有三分之一(33.19%)是Java11。与一般人群相比,这代表了AdoptOpenJDK用户中Java 11的使用率高得多。
注意:为了全面披露,New Relic是AdoptOpenJDK项目的赞助商,并正在为该项目贡献工程时间。
“垃圾收集”算法如何发挥作用
Parallel 57.77 G1 24.99 CMS 17.20 ZGC 0.04 Shenandoah <0.01
大致而言,这些选择反映了不同Java版本上使用的默认收集器。但是,当我们使用JVM版本时,会出现一些有趣的结果:
Xms/Xmx配置
Xms:2048MB Xmx:2048MB 占比8.84 Xms:512MB Xmx:512MB 占比8.74 Xms:1024MB Xmx:1024MB 占比5.76 Xms:4096MB Xmx:4096MB 占比2.83 ...
Xpin和Xmx具有相同值的组合是一个重大惊喜。我们的数据显示,仍有33.48%的JVM以此组合运行。在自适应大小调整算法的早期版本中,使用这种组合运行可能会有一些优势,但对于现代工作负载,几乎总是适得其反。如果设置此组合,则JVM将受其如何调整堆大小和各种的约束,从而使其对流量行为或请求速率的突然变化的响应能力降低。
如果运行时中存在此组合,则可能需要运行一些测试,以查看是否可以删除它以提高垃圾回收性能。
一些随机但有趣的东西
最后,我们观察了以下五个有趣的统计数据: