繁体   English   中英

Spring Boot应用程序 - 使用“mvn spring-boot:run”和“java -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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM