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

相关推荐
橙序员小站1 小时前
Agent Skill 是什么?一文讲透 Agent Skill 的设计与实现
前端·后端
怒放吧德德2 小时前
Netty 4.2 入门指南:从概念到第一个程序
java·后端·netty
雨中飘荡的记忆3 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
开心就好20254 小时前
UniApp开发应用多平台上架全流程:H5小程序iOS和Android
后端·ios
悟空码字5 小时前
告别“屎山代码”:AI 代码整洁器让老项目重获新生
后端·aigc·ai编程
小码哥_常5 小时前
大厂不宠@Transactional,背后藏着啥秘密?
后端
奋斗小强5 小时前
内存危机突围战:从原理辨析到线上实战,彻底搞懂 OOM 与内存泄漏
后端
小码哥_常5 小时前
Spring Boot接口防抖秘籍:告别“手抖”,守护数据一致性
后端
心之语歌6 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
None3216 小时前
【NestJs】基于Redlock装饰器分布式锁设计与实现
后端·node.js