当前位置:首页 > 数码 >

openjdk和jdk哪个好(openjdk和jdk的区别)

来源:原点资讯(www.yd166.com)时间:2022-12-03 08:39:37作者:YD166手机阅读>>

市面上可供选择的JVM发行版还是有不少的。选择合适的JVM需要考虑不同的因素。性能是其中一个重要的因素。靠谱的性能研究是很困难的。在本文中,我创建了一个测试,在不同的JVM上执行对比测试。测试程序包括Spring Boot REST应用,使用Prometheus监控JVM并使用Grafana可视化。下图是示意图。除了soapui外,所有东西都在docker容器中运行。

openjdk和jdk哪个好,openjdk和jdk的区别(1)

隔离干扰因素

如何确定没有别的因素干扰你的设施。我们可以通过尝试隔离分配给流程的资源来实现。 例如,分配专用CPU和固定数量的内存。 我还进行了几项测试,这些测试将资源限制放在负载均衡器,监控软件和可视化软件上(为这些资源分配不同的CPU和内存)。 为进程分配特定资源(使用docker-compose v2 cpuset和内存参数)似乎不会对单个进程负载和响应时间的度量产生很大影响。 我还比较了启动,负载和无负载情况。 在这些不同情况下,测试结果没有很大变化。

为进程分配特定CPU和内存

使用docker-compose无法为进程配置特定CPU。 docker-compose v3不支持为进程分配特定的CPU,也不支持分配资源约束。 您可以想象在潜在的多主机环境中分配特定CPU并非易事。 因此,我将docker-compose文件迁移回v2,该版本允许分配特定的CPU。 可以用于监控软件,这些CPU和JVM使用的CPU隔离开。 我使用了taskset命令。

同环境测试

您如何确保所有测试都在完全相同的情况下进行? 当我针对JVM运行测试而明天再次运行相同的测试场景时,我的结果会有所不同。 这可能有各种原因,例如不同的CPU会占用工作负载,而且这些CPU也忙于处理其他事情,或者我在主机或客户操作系统中运行不同的后台进程。 即使首次测试单个JVM并在测试之后测试另一个JVM,结果也无法比较。 例如,我正在使用Prometheus收集数据。 在第二次运行期间,Prometheus数据库可能会存储更多数据。 这可能会导致添加新数据的速度变慢,这可能会影响第二个JVM性能指标。 这个例子虽然可能相当牵强,但您可以采取措施排除其他因素。 这是我选择同时执行所有测试的原因。

setup

我的环境包括一个docker-compose文件,它允许我轻松启动4个在不同JVM上运行Spring Boot应用程序。 在4个JDK的之前,我加了一个haproxy实例来进行负载均衡。 这是为了确保不同的测试之间没有时间相关的差异,保证所有JVM都同时处于相同的负载下。

为了监控结果,我使用了Micrometer保证Prometheus能够读取JVM性能指标。 我使用Grafana对数据可视化:https://grafana.com/dashboards/4701

由于GraalVM目前仅作为JDK 8版本提供,因此其他JVM也使用JDK 8。 当容器运行时,可以通过访问执行器url来检查JVM版本:localhost:8080/actuator/env

openjdk和jdk哪个好,openjdk和jdk的区别(2)

或者使用如下命令:

docker exec -it store/oracle/serverjre:8 java -version

使用的JVM版本如下:

  • GraalVM CE rc9 (8u192)

  • OpenJDK 8u191

  • Zulu 8u192

  • Oracle JDK 8u181

开始测试

可以在这里下载代码,然后运行命令:

sh ./buildjdkcontainers.sh</pre>
<pre class="graf graf--pre">docker-compose -f docker-compose-jdks.yml up

你可以可以访问:

  • 8080端口的haproxy

  • 9090端口的Prometheus

  • 3000端口的Grafana

需要配置Grafana访问Prometheus的数据

openjdk和jdk哪个好,openjdk和jdk的区别(3)

接下来配置Grafana中的dashboard:

openjdk和jdk哪个好,openjdk和jdk的区别(4)

首页 123下一页

栏目热文

如何判断是不是openjdk(为啥用jdk不用openjdk)

如何判断是不是openjdk(为啥用jdk不用openjdk)

1 简介判断一个字符串是否包含某个特定子串是常见的场景,比如判断一篇文章是否包含敏感词汇、判断日志是否有ERROR信息等...

2022-12-03 08:43:17查看全文 >>

为啥用jdk不用openjdk8(查看是否安装openjdk)

为啥用jdk不用openjdk8(查看是否安装openjdk)

通常 OpenJDK 8 和 11 都能互相编译和通用。我们建议使用 11,但是如果你使用 JDK 8 的话也是没有问题...

2022-12-03 08:39:28查看全文 >>

openjdk和jdk有多大差距(openjdk和jdk的区别)

openjdk和jdk有多大差距(openjdk和jdk的区别)

OpenJDK与JDK的区别分析一、以下是具体分析:使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或...

2022-12-03 08:31:27查看全文 >>

openjdk17与jdk8性能差距(jdk17与jdk8速度对比)

openjdk17与jdk8性能差距(jdk17与jdk8速度对比)

本文将使用开源的 Chronicle Queue(OpenHFT/Chronicle-Queue: Micro seco...

2022-12-03 08:46:31查看全文 >>

openjdk和jdk推荐哪个(openjdk哪个版本最好)

openjdk和jdk推荐哪个(openjdk哪个版本最好)

OpenJDK是Sun在2006年末把Java开源而形成的项目,这里的“开源 ”是通常意义上的源码开放形式,即源码是可被...

2022-12-03 08:00:13查看全文 >>

什么是openjdk(为啥用jdk不用openjdk)

什么是openjdk(为啥用jdk不用openjdk)

OpenJDK是Java平台标准版的开源实现,OpenJDK在Java社区中的受欢迎程度不断提高。 什么是 OpenLo...

2022-12-03 08:11:30查看全文 >>

jdk和openjdk的区别(怎么把openjdk改成正常jdk)

jdk和openjdk的区别(怎么把openjdk改成正常jdk)

OpenJDK是Sun在2006年末把Java开源而形成的项目,这里的“开源”是通常意义上的源码开放形式,即源码是可被复...

2022-12-03 08:26:11查看全文 >>

openjdk和jdk的不同点(openjdk可以用来开发吗)

openjdk和jdk的不同点(openjdk可以用来开发吗)

Java编程语言自出现以来似乎一直是个慢性子,这次终于决定做出点改变了。Java之后的更新速度终于可以和现代编程语言相提...

2022-12-03 08:32:17查看全文 >>

openjdk哪个版本稳定(openjdk可以用来开发吗)

openjdk哪个版本稳定(openjdk可以用来开发吗)

  每个Java程序员都需要一个编程编辑器或IDE来帮助编写Java和使用类库和框架。哪个编辑器或IDE最适合你取决于几...

2022-12-03 08:21:39查看全文 >>

openjdk占用内存高(电脑一开机内存占用就很高怎么办)

openjdk占用内存高(电脑一开机内存占用就很高怎么办)

GraalVM[1] 是一种高性能的虚拟机,它可以显著的提高程序的性能和运行效率,非常适合微服务。最近比较火的 java...

2022-12-03 08:36:12查看全文 >>

文档排行