如果我们想尽快启动应用(大多数人都这样做),则可以考虑做一些调整。这里有一些办法:
- 使用
spring-context-indexer
(指向文档的链接)。对于小型应用而言,他不会增加太多,但有帮助; - 如果承担得起,请不要使用 actuator;
- 使用 Spring Boot 2.1 及 Spring 5.1;
- 使用
spring.config.location
(命令行参数或 System 属性等)修复 Spring Boot 配置文件的配置; - 通过
spring.jmx.enabled=false
关闭 JMX - 我们可能不需要在容器中使用它; - 使用
-noverify
运行 JVM。还要考虑-XX:TieredStopAtLevel=1
(这将在以后降低 JIT 的速度,但会节省启动时间); - 使用 Java 8 的容器内存提示:
-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap
。对于 Java 11,默认情况下是自动的。
我们的应用在运行时可能不需要完整的 CPU,但需要多个 CPU 才能尽快启动(至少 2、4 个会更好)。如果我们不介意启动速度慢,则可以将 CPU 降低到 4 以下。如果我们被迫以少于 4 个 CPU 的速度启动,则可以设置 -Dspring.backgroundpreinitializer.ignore=true
,因为它会阻止 Spring Boot 创建一个它可能无法使用的新线程(适用于 Spring Boot 2.1.0 及更高版本)。