Spring Boot应用程序 - 使用"mvn spring-boot:run"和"java -jar"启动时间的差异

Ann*_*nna 10 java spring spring-mvc maven spring-boot

我注意到在使用Maven和jar开始时,我的Spring Boot应用程序的启动时间有很大差异.例如:

  • mvn spring-boot:run - 5秒
  • java -jar myapp.jar - 25秒

启动jar文件需要5倍的时间.为什么会这样?使用Maven和jar启动应用程序时后台发生了什么?是不是加载了什么?是否有可能在Maven使用的时间内启动jar文件?

sha*_*zin 9

这种差异可能是因为实际上spring-boot:run是在Maven JVM中运行Spring Boot应用程序(除非你明确设置fork参数),当它在Maven JVM中运行时,它实际上是作为一个新线程而不是一个进程运行.创建线程比进程快得多.

但是java -jar命令将创建一个操作系统进程,进程创建有附加的步骤,如请求进程ID,分配内存等.最重要的是myapp.jar需要提取加上JVM将不会有任何优化,因为它将读取.class提取从jar文件第一次.基本上冷启动需要时间.

您可以在此处查看Maven Spring Boot插件的源代码