Java 虚拟机 OpenJ9 和 Hotspot 的 Benchmark 测试

IBM 开源了它开发的 J9 Java 虚拟机 (JVM),并将其贡献给了 Eclipse 基金会,重命名为 Eclipse
OpenJ9。J9 是一个高性能可伸缩的 Java 虚拟机,是许多 IBM 企业级软件产品的核心,OpenJ9 可作为 Hotspot
的替代者用于 OpenJDK,比如需要高性能的企业级运行时环境。

那么,这个 Eclipse OpenJ9 Java 虚拟机的性能到底如何?日前,有开发者运行了一些快速的 Benchmark 测试来和 Java 虚拟机 Hotspot 进行比较,以了解其性能。

测试者在两台 Linux 设备上进行测试,他将 OpenJ9 与 OpenJDK 9 打包在一起,将其性能与现有的 OpenJDK 9
Hotspot 构建版本进行比较。另外,还有一个参考的标准是 OpenJDK 8 Hotspot 的构建版本。这三个构建文件都是从它们的预构建二进制包页面获得的。

用于本次快速 Benchmark 测试的系统之一是基于 Intel Core i9 7900X,采用 Linux Kernel 4.13,运行 Ubuntu 17.04 的系统。

而另一个系统是使用有 Xeon Gold 6138 处理器并运行 Debian GNU/Linux 9.1 的双插槽 Tyan 服务器。

分别在两个系统上,测试了三个 OpenJDK 版本,并通过 Phoronix 测试套件运行了一些可用的 Java Benchmark 测试。

先来看看在 Core i9 7900X 上,本次 Hotspot/OpenJ9 测试的结果:

首先是使用 j2dbench 进行一些图形方面的基准测试。使用 OpenJ9 时,文本渲染速度明显较慢,而 Hotspot
在其他两次测试中表现相似。在 OpenJDK 8 和 9 之间也不是有很大的区别。J2dbench 是 Sun Microsystems 为
Phoronix 测试套件贡献的 Java 图形基准测试工具之一。

使用 Java 版的 SciMark2 进行一些数学运算基准测试

可以看到,至少到目前为止,OpenJ9 的性能大部分是落后于 Hotspot 的。

基于 Java 的 Bork 文件加密工具测试,可以看到 Hotspot 依然更快

JMH 测试中,它们之间的表现不相上下

Sunflow 基准测试中,Hotspot 依然更快

来自另一个系统的 Hotspot/OpenJ9 Benchmark 测试结果与 Core i9 测试的大致相似:

作为一个开源的 JVM 项目,OpenJ9 还处于初期阶段,应该在几个月后再运行一次测试,看看性能比较如何,请保持关注。

本文作者:佚名

来源:51CTO

时间: 2024-08-18 10:30:45

Java 虚拟机 OpenJ9 和 Hotspot 的 Benchmark 测试的相关文章

Java虚拟机详解----JVM常见问题总结

[正文] 声明:本文只是做一个总结,有关jvm的详细知识可以参考本人之前的系列文章,尤其是那篇:Java虚拟机详解04----GC算法和种类.那篇文章和本文是面试时的重点. 面试必问关键词:JVM垃圾回收.类加载机制.   先把本文的目录画一个思维导图:(图的源文件在本文末尾)   一.Java引用的四种状态: 强引用: 用的最广.我们平时写代码时,new一个Object存放在堆内存,然后用一个引用指向它,这就是强引用. 如果一个对象具有强引用,那垃圾回收器绝不会回收它.当内存空间不足,Java

深入理解Java虚拟机:OutOfMemory实战

在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError(下文称OOM)异常的可能,本节将通过若干实例来验证异常发生的场景.并且会初步介绍几个与内存相关的最基本的虚拟机参数. 本节内容的目的有两个:第一,通过代码验证Java虚拟机规范中描述的各个运行时区域存储的内容:第二,希望读者在工作中遇到实际的内存溢出异常时,能根据异常的信息快速判断是哪个区的内存溢出,知道什么样的代码可能导致这些区域内存溢出,以及出现这些异常后该如何处理. 下文

JVM学习(1)——通过实例总结Java虚拟机的运行机制

JVM的历史 JVM的运行流程简介 JVM的组成(基于 Java 7) JVM调优参数:-Xmx和-Xms 逃逸分析(DoEscapeAnalysis )的概念--JVM栈上分配实验 JVM中client模式(-client)和server模式(-server)的区别 查看GC日志的方法 使用idea对JVM进行参数输入 Java栈,Java堆和方法区的交互原理 为了能让递归方法调用的次数更多一些,应该怎么做?   当今--截止本文总结之前,使用最为广泛的 JVM 为 HotSpot(HotSp

探秘Java虚拟机——内存管理与垃圾回收

1.Java虚拟机运行时的数据区 2.常用的内存区域调节参数 -Xms:初始堆大小,默认为物理内存的1/64(<1GB):默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制 -Xmx:最大堆大小,默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制 -Xmn:新生代的内存空间大小,注意:此处的大小是(eden+ 2 survivor space).与jmap -heap中

IBM J9 Java虚拟机正式开源,贡献给Eclipse基金会管理

去年这个时候,IBM 曾宣布要开源其 J9 Java 虚拟机 (JVM),并命名为 OpenJ9.近日,我们发现该项目已托管至 GitHub,并且可以看到,OpenJ9 已贡献给 Eclipse 基金会. 据 OpenJ9 官网介绍,OpenJ9 是一个高性能的企业级 Java 虚拟机. OpenJ9 项目的长期目标是促进 JVM 开发者的开放生态系统,从而可以与硬件平台.操作系统.工具和框架设计师和开发者进行协作和创新. 生态系统通过竞争已得到改进,Java 社区从 JVM 规范的多个实现中受

JVM学习(1)——通过实例总结Java虚拟机的运行机制(转)

俗话说,自己写的代码,6个月后也是别人的代码--复习!复习!复习!涉及到的知识点总结如下: JVM的历史 JVM的运行流程简介 JVM的组成(基于 Java 7) JVM调优参数:-Xmx和-Xms 逃逸分析(DoEscapeAnalysis )的概念--JVM栈上分配实验 JVM中client模式(-client)和server模式(-server)的区别 查看GC日志的方法 使用idea对JVM进行参数输入 Java栈,Java堆和方法区的交互原理 为了能让递归方法调用的次数更多一些,应该怎

了解Java虚拟机JVM的基本结构及JVM的内存溢出方式_java

JVM内部结构图 Java虚拟机主要分为五个区域:方法区.堆.Java栈.PC寄存器.本地方法栈.下面 来看一些关于JVM结构的重要问题. 1.哪些区域是共享的?哪些是私有的? Java栈.本地方法栈.程序计数器是随用户线程的启动和结束而建立和销毁的, 每个线程都有独立的这些区域.而方法区.堆是被整个JVM进程中的所有线程共享的. 2.方法区保存什么?会被回收吗? 方法区不是只保存的方法信息和代码,同时在一块叫做运行时常量池的子区域还 保存了Class文件中常量表中的各种符号引用,以及翻译出来的

探秘Java虚拟机——内存管理与垃圾回收(转)

本文主要是基于Sun JDK 1.6 Garbage Collector(作者:毕玄)的整理与总结,原文请读者在网上搜索. 1.Java虚拟机运行时的数据区 2.常用的内存区域调节参数 -Xms:初始堆大小,默认为物理内存的1/64(<1GB):默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制 -Xmx:最大堆大小,默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制

Java虚拟机类型卸载和类型更新解析

首先看一下,关于java虚拟机规范中时如何阐述类型卸载(unloading)的: A class or interface may be unloaded if and only if its class loader is unreachable. The bootstrap class loader is always reachable; as a result,system classes may never be unloaded. Java虚拟机规范中关于类型卸载的内容就这么简单两句