利用OpenJ9大幅度降低JAVA内存占用

时间:2020-07-01 12:56:50   收藏:0   阅读:60

技术图片

OpenJ9

介绍

好处

性能

这些结果表明,OpenJ9在(通常是相互冲突的)性能指标之间达到了良好的平衡:借助AOT技术,它可以节省大量的空间并缩短启动时间,同时还提供与Hotspot竞争的吞吐量性能。 由于其内存占用量低,OpenJ9特别适合于云计算环境,在这种环境中,节省内存可为云用户和提供商节省成本。

实际使用

目前我的项目是一个基于 Spring Boot 开发的,项目中加入了大量定时器以及多线程,网络IO请求,数据计算等。生产环境部署方式采用的Docker,之前是采用的官方的openjdk镜像,目前已经改为了openj9,至于为什么请看以下数据。

我这里以比较突出的内存占用进行比较。

服务器配置

2核4G

openjdk

对应的Dockerfile

FROM openjdk:8-jdk-alpine
ADD target/app.jar app.jar
ENTRYPOINT [     "java",     "-XX:MetaspaceSize=256m",     "-XX:MaxMetaspaceSize=256m",     "-Xms2048m",     "-Xmx2048m",     "-Xmn256m",     "-Xss256k",     "-XX:SurvivorRatio=8",     "-XX:+UseConcMarkSweepGC",     "-Duser.timezone=GMT+08",     "-Djava.security.egd=file:/dev/./urandom",     "-jar",     "/app.jar",     "--spring.profiles.active=prod" ]

运行2小时后内存占用情况:
技术图片
后续运行更久时甚至达到了90%以上。
技术图片

openj9

对应的Dockerfile

FROM adoptopenjdk:8-jdk-openj9
ADD target/app.jar app.jar
ENTRYPOINT [     "java",     "-XX:MetaspaceSize=256m",     "-XX:MaxMetaspaceSize=256m",     "-Xms2048m",     "-Xmx2048m",     "-Xmn256m",     "-Xss256k",     "-XX:SurvivorRatio=8",     "-XX:+UseConcMarkSweepGC",     "-Duser.timezone=GMT+08",     "-Djava.security.egd=file:/dev/./urandom",     "-Xshareclasses",     "-Xquickstart",     "-jar",     "/app.jar",     "--spring.profiles.active=prod" ]

运行2小时后内存占用情况:
技术图片
后续运行更久也没有明显变化。
技术图片

最后从数据看来结果,内存占用真的低,非常节省服务器资源,相同负载下至少节省一半的服务器资源。
值得推荐大家去尝试。

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!