java 1.8+ vm_Oracle GraalVM初体验,性能不如Java9!

本文介绍了作者对GraalVM 1.0.0-rc1在Java 8上的初步体验,发现其性能提升不明显,尤其是在与Java 9的对比中。尽管GraalVM提供了将JAR转换为本机可执行文件的能力,但在尝试使用JMH进行性能测试和尝试为Spring Pet Clinic创建本地镜像时遇到了问题,如类加载错误和不支持的特性。作者认为GraalVM目前仍存在局限性,期待未来版本的改进。
摘要由CSDN通过智能技术生成

e9dea9c489a5ec147eceec4c84297737.png

作者简介

第一步是下载Graal VM。它有两种选择:

社区版(Community Edition)

所有开源许可证

免费供生产使用

企业版(Enterprise Edition)

免费用于评估和其他非生产用途

对于商业用途和支持选项,应联系销售团队

第一个体验感受:CE版仅支持Linux操作系统。对于OSX,需要使用EE版本。目前还没有Windows版本(那么,未来还有吗?)

GraalVM架构

该架构与传统的Java JDK 9之前的版本相似。

8e72cf5f11a717e6350e833bf41de3f8.png

GraalVM JDK的架构

因此,GraalVM可以成为任何标准JDK的替代品。

运行java -version将返回以下的输出:

java version "1.8.0_161"Java(TM) SE Runtime Environment (build 1.8.0_161-b12)GraalVM 1.0.0-rc1 (build 25.71-b01-internal-jvmci-0.42, mixed mode)

java version "1.8.0_161"Java(TM) SE Runtime Environment (build 1.8.0_161-b12)GraalVM 1.0.0-rc1 (build 25.71-b01-internal-jvmci-0.42, mixed mode)

截至目前,GraalVM仅限于Java 8功能。

一些性能测试基准

下一步是检查性能是否有所改善。我使用了JMH框架:它专注于此。

我使用了下面的代码:

bbd675c596c089b10011c1a21237fd9f.png

并使用java -jar target / benchmarks.jar命令行在3个不同的JRE上进行了测试。

GraalVM结果

# JMH version: 1.20# VM version: JDK 1.8.0_161, VM 25.71-b01-internal-jvmci-0.42# VM invoker: /usr/local/graalvm-1.0.0-rc1/Contents/Home/jre/bin/java# VM options: # Warmup: 20 iterations, 1 s each# Measurement: 20 iterations, 1 s each# Timeout: 10 min per iteration# Threads: 1 thread, will synchronize iterations# Benchmark mode: Throughput, ops/time# Benchmark: ch.frankel.blog.MyBenchmark.testMethodResult "ch.frankel.blog.MyBenchmark.testMethod": 6.795 ±(99.9%) 0.016 ops/s [Average] (min, avg, max) = (6.477, 6.795, 6.967), stdev = 0.068 CI (99.9%): [6.778, 6.811] (assumes normal distribution)# Run complete. Total time: 00:06:59Benchmark Mode Cnt Score Error UnitsMyBenchmark.testMethod thrpt 200 6.795 ± 0.016 ops/s

# JMH version: 1.20# VM version: JDK 1.8.0_161, VM 25.71-b01-internal-jvmci-0.42# VM invoker: /usr/local/graalvm-1.0.0-rc1/Contents/Home/jre/bin/java# VM options: # Warmup: 20 iterations, 1 s each# Measurement: 20 iterations, 1 s each# Timeout: 10 min per iteration# Threads: 1 thread, will synchronize iterations# Benchmark mode: Throughput, ops/time# Benchmark: ch.frankel.blog.MyBenchmark.testMethodResult "ch.frankel.blog.MyBenchmark.testMethod": 6.795 ±(99.9%) 0.016 ops/s [Average] (min, avg, max) = (6.477, 6.795, 6.967), stdev = 0.068 CI (99.9%): [6.778, 6.811] (assumes normal distribution)# Run complete. Total time: 00:06:59Benchmark Mode Cnt Score Error UnitsMyBenchmark.testMethod thrpt 200 6.795 ± 0.016 ops/s

Oracle JDK 8结果

# JMH version: 1.20# VM version: JDK 1.8.0_92, VM 25.92-b14# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/jre/bin/java# VM options: # Warmup: 20 iterations, 1 s each# Measurement: 20 iterations, 1 s each# Timeout: 10 min per iteration# Threads: 1 thread, will synchronize iterations# Benchmark mode: Throughput, ops/time# Benchmark: ch.frankel.blog.MyBenchmark.testMethodResult "ch.frankel.blog.MyBenchmark.testMethod": 6.727 ±(99.9%) 0.017 ops/s [Average] (min, avg, max) = (6.466, 6.727, 6.899), stdev = 0.070 CI (99.9%): [6.710, 6.743] (assumes normal distribution)# Run complete. Total time: 00:07:00Benchmark Mode Cnt Score Error UnitsMyBenchmark.testMethod thrpt 200 6.727 ± 0.017 ops/s

# JMH version: 1.20# VM version: JDK 1.8.0_92, VM 25.92-b14# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/jre/bin/ja

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值