Efficient Deployments
-
默认情况下,基于SpringBoot框架开发应用时,构建插件
spring-boot-maven-plugin
将项目打包为fat jar。
执行如下命令,解压构建得到的jar文件。java -Djarmode=tools -jar my-app.jar extract
执行如下命令,使用解压后的jar文件,启动SpringBoot应用。
java -jar my-app/my-app.jar
执行如下命令,查看工具的帮助。
java -Djarmode=tools -jar my-app.jar help extract
参考资料
- 深入理解SpringBoot加载FatJar原理
- Maven插件打fatjar的一些技巧
- 打胖瘦jar包的两种方式(idea与maven插件),多图详解
- 啥?你没听过SpringBoot的FatJar?
- maven打包fat-jar注意的问题
- jar的官方文档
- Jar 包签名
CDS
-
Class Data Sharing
CDS是JVM的特性,有助于缩短Java应用的启动时间,并减少内存占用量。java -Djarmode=tools -jar my-app.jar extract --destination application cd application java -XX:ArchiveClassesAtExit=application.jsa -Dspring.context.exit=onRefresh -jar my-app.jar java -XX:SharedArchiveFile=application.jsa -jar my-app.jar
-
Spring CDS
使用CDS时的注意事项:- 创建
application.jsa
时使用的JVM,和运行Java应用加载application.jsa
时使用的的JVM,二者需要保持一致,即版本号、安装路径等需要保持一致。 - Java应用启动时指定的类路径,需要使用jar文件的清单,避免使用目录或者通配符。
- Java应用加载的jar文件,需要保持一致。
- Java应用加载的jar文件的时间戳,需要保持一致。
增加JVM选项
-Xlog:class+load:file=cds.log
,通过检查cds.log
的内容,确认CDS优化的效果。
增加JVM选项-Xshare:on
,确认CDS是否正常启用。 - 创建
官方文档
- Class Data Sharing
- JEP 310: Application Class-Data Sharing
- JEP 350: Dynamic CDS Archives
- Application Class-Data Sharing
- Dynamic CDS Archive
网页的锚点有点问题。
参考资料
AOT
-
Ahead-of-Time Processing With the JVM
AOT和CDS可以同时使用,通过牺牲一部分动态能力,缩短Java应用的启动时间。
mvn -Pnative package java -Dspring.aot.enabled=true -jar myapplication.jar
相关的注解,比如:
@Profile
@Conditional
@ConditionalOnProperty
GraalVM
- GraalVM Native Images
基于GraalVM技术,将Java字节码处理为平台相关的代码,降低内存占用,缩短应用的启动时间。 - Introducing GraalVM Native Images
- Developing Your First GraalVM Native Application
- Native Image Compatibility Guide
Checkpoint and Restore
- Checkpoint and Restore With the JVM
Coordinated Restore at Checkpoint (CRaC) is an OpenJDK project that defines a new Java API to allow you to checkpoint and restore an application on the HotSpot JVM.
- JVM Checkpoint Restore
JVM的启动选项,如下:-XX:CRaCCheckpointTo=PATH
-XX:CRaCRestoreFrom=PATH
参考资料
-
Checkpoint/Restore tool
-
Welcome to CRIU, a project to implement checkpoint/restore functionality for Linux.
Container Images
改进容器的打包方式,分离不变和变的组件,加速容器镜像的构建进程。
对于开发人员来说,有助于缩短构建时的等待时间,提高生产率。
参考资料
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容