自学内容网 自学内容网

spring boot 3.2.x 使用CDS加速启动

maven 配置 业务包和依赖包分离

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <executable>true</executable>
                    <layout>ZIP</layout>
                    <!--解决windows命令行窗口中文乱码-->
                    <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
                    <!--这里是填写需要包含进去的jar,
                      必须项目中的某些模块,会经常变动,那么就应该将其坐标写进来
                      如果没有则nothing ,表示不打包依赖 -->
                    <includes>
                        <include>
                            <groupId>nothing</groupId>
                            <artifactId>nothing</artifactId>
                        </include>
                    </includes>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <!--指定的依赖路径-->
                            <outputDirectory>
                                ${project.build.directory}/lib
                            </outputDirectory>
                            <excludeScope>provided</excludeScope>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>cn.mhauto.cloud.platform.uaa.spring.UaaApplication</mainClass>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

        </plugins>
    </build>

使用CDS加速

方式一使用spring的类加载器

  • 训练
java --enable-preview -XX:ArchiveClassesAtExit=./application.jsa -Dspring.context.exit=onRefresh -jar  target/xxx-0.0.1.jar
  • 启动
java  --enable-preview  -XX:SharedArchiveFile=application.jsa -jar target/xxx-0.0.1.jar

方式二,使用AppClassloder加载器

java --enable-preview -XX:ArchiveClassesAtExit=./application.jsa -Dspring.context.exit=onRefresh -cp mhauto-tenant-uaa-0.0.1.jar.original cn.mhauto.cloud.platform.uaa.spring.UaaApplication

java  --enable-preview  -XX:SharedArchiveFile=application.jsa -cp mhauto-tenant-uaa-0.0.1.jar.original cn.mhauto.cloud.platform.uaa.spring.UaaApplication

总结

  • 两种方式都能使用cds加速
  • 虽然使用的Spring 的类加载器, 但依然还有性能提升。
  • 提升启动速度大约45%
  • 启动时的cpu占用降低30%

原文地址:https://blog.csdn.net/u014087707/article/details/140346392

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!