字节最新开源项目CompoundVM-在JDK8上启用JVM17

大家好,这里是小奏 ,觉得文章不错可以关注公众号小奏技术

背景

对于许多旧版 Java 应用程序(例如使用 Java 8),将应用程序升级到更高版本的 JDK 通常需要昂贵且耗时的项目迁移。

那么有没有一种方案在不升级JDK版本的情况下使用最新的JVM,获取到高版本JVM的性能提升呢?

答案就是字节最新开源的CompoundVM

CompoundVM

CompoundVM (CVM) 是一个旨在为较低版本JDK带来更高版本JVM性能的项目。

现在,您可以使用高级JVM功能运行应用程序,而升级项目的成本几乎为零。

支持版本及平台

目前CompoundVM版本为CVM-8+17,意味可在JDK 8 上启用JVM 17

目前支持的平台仅有Linux/x86_64,其他操作系统都暂不支持

CVM与上游 OpenJDK 项目采用相同的许可证开发。

特性与优势

更高版本的JVM 带来了垃圾收集、JIT 等的增强。

  • 生产就绪型低延迟 ZGC
  • 增强的 ParallelGC 和 G1GC,具有更高的吞吐量、更低的延迟和更少的内存占用
  • 增强的内部函数
  • 直接替代现有 JDK,易于升级和回滚

使用

目前提供的使用方式主要是基于源码的构建方式

shell 复制代码
git clone https://github.com/bytedance/CompoundVM.git

make -f cvm.mk cvm8default17

下载完源码并构建后我们输入

shell 复制代码
java -version

会输出如下信息

shell 复制代码
openjdk version "1.8.0_382"
OpenJDK Runtime Environment (build 1.8.0_382-cvm-b00)
OpenJDK 64-Bit Server VM (CompoundVM 8.0.0) (build 17.0.8+0, mixed mode)

这说明JVM 17 已在 JDK 8 中启用

测试方式

目前没在实际项目中测试过

但是感觉可以从几个方面来评估

  1. 使用CVM后的内存占用情况
  2. 使用CVM后进行压测看看吞吐是否有提升
  3. 使用CVM修改JVM垃圾收集器ZGC看看效果

总结

CompoundVM主要是针对老项目不容易升级JDK版本项目的性能提升

老项目想要高版本 JVM 性能可以尝试使用该项目

如果是有条件升级JDK版本的项目还是推荐升级JDK

毕竟目前来看只是做了性能上的优化,语法层面应该没有提升。

其次只支持JDK 17 目前最新JDK已经升级到21

相关推荐
David爱编程22 分钟前
进程 vs 线程到底差在哪?一文吃透操作系统视角与 Java 视角的关键差异
后端
smileNicky10 小时前
SpringBoot系列之从繁琐配置到一键启动之旅
java·spring boot·后端
David爱编程11 小时前
为什么必须学并发编程?一文带你看懂从单线程到多线程的演进史
java·后端
long31611 小时前
java 策略模式 demo
java·开发语言·后端·spring·设计模式
rannn_11112 小时前
【Javaweb学习|黑马笔记|Day1】初识,入门网页,HTML-CSS|常见的标签和样式|标题排版和样式、正文排版和样式
css·后端·学习·html·javaweb
柏油13 小时前
Spring @Cacheable 解读
redis·后端·spring
柏油13 小时前
Spring @TransactionalEventListener 解读
spring boot·后端·spring
两码事15 小时前
告别繁琐的飞书表格API调用,让飞书表格操作像操作Java对象一样简单!
java·后端
shark_chili15 小时前
面试官再问synchronized底层原理,这样回答让他眼前一亮!
后端
灵魂猎手16 小时前
2. MyBatis 参数处理机制:从 execute 方法到参数流转全解析
java·后端·源码