SpringBoot文档之构建包的阅读笔记
cnblogs 2024-08-24 15:09:00 阅读 58
- <li>Packaging Spring Boot Applications
Efficient Deployments
Efficient Deployments
默认情况下,基于SpringBoot框架开发应用时,构建插件<code>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
JVM CDS
How To CDS
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是否正常启用。- 创建
Builder Configuration
官方文档
- Class Data Sharing
- JEP 310: Application Class-Data Sharing
- JEP 350: Dynamic CDS Archives
- Application Class-Data Sharing
- Dynamic CDS Archive
网页的锚点有点问题。
参考资料
- JAVA 提速方法——类数据共享 CDS
- 觉得 Java 启动慢?快来使用 CDS 特性飞速启动~
- Spring Boot 3.3.0 新特性| 使用 CDS 优化启动时间
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
Ahead-of-Time Processing
Understanding Spring Ahead-of-Time Processing
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
参考资料
CRaC
CRIU代码仓库
Checkpoint/Restore tool
CRIU官网。
Welcome to CRIU, a project to implement checkpoint/restore functionality for Linux.
BellSoft Liberica JDK
Azul JDK
org.crac
Container Images
改进容器的打包方式,分离不变和变的组件,加速容器镜像的构建进程。
对于开发人员来说,有助于缩短构建时的等待时间,提高生产率。
- Container Images
- Efficient Container Images
- Dockerfiles
- Cloud Native Buildpacks
参考资料
- Java Buildpack Reference
- Layered Jar or War
- Packaging Layered Jar or War
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。