字节最新开源项目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

相关推荐
IT_陈寒2 小时前
Redis内存爆了,原来我漏掉了这个致命配置
前端·人工智能·后端
fliter3 小时前
最后一块拼图:用 bitvec 构造 IPv4 包,真正做出自己的 Ping
后端
fliter4 小时前
用 Rust 解析并生成 ICMP 包:checksum、nom 与 cookie-factory
后端
蝎子莱莱爱打怪4 小时前
XZLL-IM干货系列 03|消息 ID 设计:一个 UUID 搞不定的事,我用两个 ID 解决了
后端·面试·开源
fliter4 小时前
从 panic 到 Result:用 Rust 重新整理一个 ping 项目的错误处理
后端
森蓝情丶4 小时前
我给 AI 搭了个法庭:一个前端仔的 LangGraph 实战全记录
前端·后端
JensCS猿4 小时前
从 Spring Boot 回看 SSM 框架:手动挡与自动挡的驾驶哲学
后端
爱勇宝4 小时前
干了近 8 年,一夜之间被裁:AI 时代,程序员最该害怕的不是 AI
前端·后端·程序员
科米米5 小时前
嵌入式日志模块
后端
血小溅5 小时前
三大 AI 编码框架深度对比:GSD vs OpenSpec vs Superpowers
人工智能·后端