![](/img/trans.png)
[英]“mvn spring-boot:run” vs “java jar target/xxx.jar”
[英]Spring Boot application - difference in startup time with “mvn spring-boot:run” and “java -jar”
我注意到在使用Maven和jar开始时,我的Spring Boot应用程序的启动时间有很大差异。 例如:
mvn spring-boot:run
- 5秒 java -jar myapp.jar
- 25秒 启动jar文件需要5倍的时间。 为什么会这样? 使用Maven和jar启动应用程序时后台发生了什么? 是不是加载了什么? 是否有可能在Maven使用的时间内启动jar文件?
这种差异可能是因为spring-boot:run
实际上是在Maven JVM中运行Spring Boot应用程序(除非你明确设置了fork
参数),当它在Maven JVM中运行时它实际上是作为一个新线程运行而不是一个过程。 创建线程比进程快得多。
但java -jar
命令将创建一个OS进程,进程创建有附加的步骤,如请求进程ID,分配内存等。最重要的是myapp.jar
将需要提取加上JVM将不会有任何优化它将首次读取从jar文件中提取的.class
。 基本上冷启动需要时间。
您可以在此处查看Maven Spring Boot插件的源代码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.