springboot 3.3版本 类数据共享(CDS)提升启动速度 使用方法+Docker打包代码

springboot 3.3 版本已经正式发布,新版本提供了类数据共享(CDS)功能,通过将类元数据缓存在 Archive(归档/存档) 文件中,使其可以快速预加载到新启动的 JVM 中,从而帮助缩短 JVM 的启动时间和内存占用。

闲话少说,直接体验。

使用springboot3.3创建项目(此处略)。

编译应用

我们先把应用打包成jar包:mvn clean package
此处假设打包出来的是service.jar
按照官方文档,我们需要将一体式jar包提取成可以使用CDS技术的格式,使用下面的命令:

java -Djarmode=tools -jar service extract

执行后,目录就变成了 类似下面这样:

service├── service.jar├── lib│   ├── ...│   ├── 应用的各种依赖包.jar│   ├── ...

这个结构启动方式略有变化,变成了执行 java -jar service/service.jar,这样就可以运行起来了。

生成CDS归档文件

根据官方说法,使用CDS和生成CDS的jdk版本,目录等最好一致,所以我们直接去后面要运行应用的容器中执行生成CDS存档的命令,这样就可以保证环境完全一致。

Dockerfile参考如下:

# 基础镜像自己选一个 我这里用了 zulujdk
FROM zaul/zulu-openjdk:21.0.3
# 把刚才生成的应用的整个目录放进来
ADD service /opt/serviceENV TZ Asia/Shanghai
RUN ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime \&& echo ${TZ} > /etc/timezone
# 重点1: 预生成存档,参考 https://docs.spring.io/spring-framework/reference/integration/cds.html
RUN cd /opt/ && java -jar -XX:ArchiveClassesAtExit=application.jsa -Dspring.context.exit=onRefresh service/service.jar
# 重点2: 运行时使用预生成的存档
ENTRYPOINT  ["java", "-jar", "-XX:SharedArchiveFile=application.jsa", "/opt/service/service.jar"]

经过上面的打包,运行时应用就会使用预先生成的类数据,不再需要重新加载,可以提升启动速度(实际效果自行体验哈)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/17997.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode题目18

四数之和 中等 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复)&#xf…

HiWoo Box工业网关

在科技飞速发展的今天,工业领域正迎来智能化变革。在这场变革中,工业网关作为连接工业设备与远程控制中心的桥梁,发挥着至关重要的作用。HiWoo Box网关凭借其卓越的性能和广泛的应用场景,为工业领域带来了全新的智慧化解决方案。 …

大模型主流 RAG 框架TOP10

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 总结链接…

中心入侵渗透

问题1. windows登录的明文密码,存储过程是怎么样的?密文存在哪个文件下?该文件是否可以打开,并且查看到密文? 回答: Windows登录的明文密码的存储过程是: 当用户尝试登录Windows时&#xff0…

Mac软件公正方式

1、先执行 xcrun notarytool store-credentials "ccc-test" --apple-id "12345678qq.com" --team-id BHKKKKKK --password ljsp-xxxx-xxxx-xxxx 其中 ccc-test 为随便起的一个名字 --apple-id 为自己的apple 开发者账号 --team-id 自己的team --passw…

mysql的inner join 和left join区别

1. INNER JOIN INNER JOIN 只返回两个表中满足连接条件的匹配行。换句话说,它只返回那些在连接的两个表中都有匹配值的行。如果某一行在其中一个表中没有匹配项,那么这行不会出现在结果集中。 写法: SELECT columns FROM table1 INNER JOI…

瓦罗兰特国际服怎么注册账号 瓦罗兰特 无畏契约账号注册教程

瓦罗兰特国际服怎么注册账号 瓦罗兰特 无畏契约账号注册教程 瓦罗兰特作为拳头游戏开发的一款多人竞技第一人称射击游戏,自从2020年发布之后,热度持续升高,游戏采用5V5竞技模式,采用了传统FPS中游戏的类型,玩家们分为…

样本拟合正弦函数? 梯度下降法? NO,比梯度下降还快的算法.

假设样本数据是跟sin函数值相关的. 那么如何求这些数据的相位和振幅?还有频率? 搞了半天的梯度下降算法. 准备拟合出合适的参数值. 代码是人工智能生成的. 跑不通 , 自己改了一下也是跑不通. 因为sin函数的拟合牵扯到求偏导数. . 梯度下降算法的原理是通的. 可不知道是哪里的…

【软考】下篇 第19章 大数据架构设计理论与实践

目录 大数据处理系统架构特征Lambda架构Lambda架构介绍Lambda架构实现Lambda架构优缺点Lambda架构与其他架构模式对比 Kappa架构Kappa架构介绍Kappa架构实现Kappa架构优缺点 常见Kappa架构变形(Kappa、混合分析系统)Kappa架构混合分析系统的Kappa架构 La…

Golang协程和通道

文章目录 协程(goroutine)基本介绍GMP模型协程间共享变量 通道(channel)基本介绍channel的定义方式channel的读写channel的关闭channel的遍历方式只读/只写channelchannel最佳案例select语句 协程(goroutine&#xff0…

撤销最近一次的提交,使用git revert 和 git reset的区别

文章目录 工作区 暂存区 本地仓库 远程仓库需求:已推送到远程仓库,想要撤销操作git revert (添加新的提交来“反做”之前的更改,云端会残留上次的提交记录)git reset(相当于覆盖上次的提交)1.--…

Maven高级详解

文章目录 一、分模块开发与设计分模块开发的意义模块拆分原则 分模块开发(模块拆分)创建Maven模块书写模块代码通过maven指令安装模块到本地仓库(install指令) 二、依赖管理依赖传递可选依赖排除依赖可选依赖和排除依赖的区别 三、聚合与继承聚合工程聚合工程开发创建Maven模块…

getPopupContainer解决ant-design-vue select组件下拉框偏移错位

getPopupContainer解决ant-design-vue select组件下拉框偏移错位 如何使下拉框跟随select移动解决下拉框偏移和table中下拉框失去焦点问题 <SelectallowClearclass="book-select"@change="value=>handleSelectChange(publish,value)"placeholder=&qu…

老师如何在线发布期末考试成绩查询?

在这个数字化时代&#xff0c;教育领域也迎来了翻天覆地的变化。传统的纸质成绩查询方式已经逐渐被在线成绩查询所替代。如何高效、便捷地进行在线期末考试成绩查询&#xff1f; 成绩的录入与上传。教师需要将学生的考试成绩准确无误地录入系统。这一步骤需要细心和耐心&#x…

AI数字人及其应用

本文将简单了解下AI数字人、应用场景。 一、基本认识 AI数字人&#xff1a;使用人工智能技术创建的虚拟数字化人物。这些数字人物可以被设计成具有人类般的外观、行为和交互能力。它们通常用于虚拟现实、视频、游戏、培训模拟、客户服务等领域。 其中AI数字人在视频制作中是…

阻塞、非阻塞、同步与异步IO的区别

IO读取数据的过程 如图所示&#xff0c;进程读取数据的过程主要分为两个步骤 1.内核将数据准备好到内核缓冲区 2.内核将数据拷贝到用户态 在上述这两个过程里&#xff0c;进程首先和内核打交道&#xff0c;之后内核再和硬件&#xff08;如网卡&#xff09;打交道 阻塞IO 如图所…

鹏哥C语言复习——调试

目录 什么是调试&#xff1f; Debug和Release&#xff1a; 调试方法&#xff1a; 环境准备&#xff1a; 调试快捷键介绍&#xff1a; 调试快捷键注意事项&#xff1a; 监视与内存查看&#xff1a; 数组元素的监视&#xff1a; 编译常见错误归类&#xff1a; 编译型错…

代码随想录Day35

122.买卖股票的最佳时机|| 题目&#xff1a;122. 买卖股票的最佳时机 II - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;感觉就是找上升区间&#xff0c;定义两个指针&#xff0c;移动终点去找下一个值&#xff0c;一旦发现数值下降&#xff0c;就计算下降前一个数字…

【前端学习笔记】HTML基础

HTML 一、HTML介绍1.HTML概念2.文档声明3.字符编码4. HTML标签5. HTML属性 二、标签1.meta标签2.语义标签3.布局标签4.列表5.超链接6.图片7.字符实体8.内联格式9.HTML 表格10.HTML 表单 三、HTML5新特性1. 本地存储2. Cookie3. 语义化标签4.多媒体元素5.表单增强6.Canvas7.SVG …

使用VUE3+TS+elementplus创建一个增加按钮

一、前言 在上一篇文章中分享了创建table的过程&#xff0c;详见&#xff08;VUE3TSelementplus创建table&#xff0c;纯前端的table&#xff09;&#xff0c;本文在创建好的table的基础上&#xff0c;再创建一个增加按钮。 二、程序展示 1、前面创建table的程序 <templ…