前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谁说Java不适合写微服务?来看看这款内存占用降低4倍的jvm虚拟机openJ9

谁说Java不适合写微服务?来看看这款内存占用降低4倍的jvm虚拟机openJ9

作者头像
崩天的勾玉
发布2021-12-22 15:31:52
2.4K0
发布2021-12-22 15:31:52
举报
文章被收录于专栏:崩天的勾玉崩天的勾玉

Eclipse OpenJ9 是一个 Java 虚拟机(JVM),它是运行 Java 应用程序的引擎,而 OpenJDK 是一个完整的开发工具包,包含其他组件,如Java 类库以及 JVM。默认情况下,OpenJDK 使用名为 Hotspot 的 JVM。简单地说,OpenJ9 是一个 JVM 替代方案,可将其作为 OpenJDK 二进制文件的一部分。

而OpenJ9其自身是基于IBM开源的OMR项目所构建,OMR项目由一个高度集成的开放源码C和c++组件,可用于构建大量的语言,运行时支持许多不同的硬件和操作系统平台。这些组件包括但不限于:内存管理,线程处理,平台端口(抽象)库,诊断支持,监控支持,垃圾收集和本地实时编译。OMR的意图在于让实现语言的人能够重用IBM在Java运行时方面所投入的数百开发人多年所取得的成果,能够受益的包含已有的语言如Ruby、Python、Javascript等等,它还能加快新语言的创建过程。

01

前言

如果说hotspot是Java虚拟机「武林盟主」的话,那openj9可以称之为「天下第二」。

早年IBM将j9捐献给eclipse基金会,现在又拿了回来自己发展,大概是看到openj9的发展潜力了吧!

我们知道Java现在并不是很适合做微服务的场景,尽管有springcloud可以支撑微服务的架构,但是Java语言却有跟不上微服务的情况,例如:

1、Java太占用内存,在单体应用的话其实无可厚非,内存占用多些对运行效率也有好处,但是却不适合微服务的场景,如果每个小的微服务都占用不少内存,那就体现不出微的作用了。

2、Java编译慢,spring启动慢。spring作为Java必不可少的框架,大量运用了反射技术,牺牲了运行效率,我们知道反射的性能是非常差的,但是框架为了开发方便不得不做出这方面的牺牲。在即将到来的spring6里据说针对微服务有了很大的改进,但是spring6只支持java17,这意味着国内在几年内几乎很难用到生产环境上。

所以很多公司改用Go语言来替代Java编写微服务,Go语言本身编译快、并发性能好、占用内存少让他成为了微服务时代的热门语言,虽然语言本身较为简陋,目前版本连泛型都无,不适合做大型单体应用(这方面还是Java主流)。

02

对比测试

最近在研究openj9虚拟机,相对于耳熟能详的hotspot来说可能不是很出名,但是在adoptopenjdk的伴随下也渐渐为人所知,我在体验后发现确实是非常好用,官方对openj9做了测试:

1)启动后的内存消耗

2)在负载压力平稳后的内存消耗

3)系统启动耗时

4)吞吐量

5)在CPU受限环境中的测试

测试结果显示,与Hotspot相比OpenJ9有如下的优势:

1)启动时的内存占用大幅降低

2)负载稳定后的内存占用大幅降低

3)启动时间大幅缩短

4)吞吐量相近

5)在CPU受限的环境中能更快的达到最大吞吐量

可以说真的很适合微服务的场景!

我自己也进行了一个简单的测试,针对开源项目若依,我将之打成jar包,然后用hotspot和openj9分别对内存占用进行对比(都是openjdk8u312)

hotspot:

启动时间:9.82s 内存占用:640.7m

openj9:

启动时间:13.064s 占用内存:168.2m

总结:根据测试,启动时间并没有缩短,反而增加了3s多,但是内存占用降低了4倍

03

小结

这只是一个简单的测试,但是不难看出hotspot和openj9的区别。

在选用adoptOpenJDK的时候,可以选择hotspot版本,也可以选择openj9版本,如果你追求cpu计算的性能,以及稳定性考虑(毕竟hotspot都在用),可以选择hotspot,如果你打算尝鲜,或者内存吃紧,不妨尝试一下openj9。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 崩天的勾玉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档