gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 13:50:03 29 4
gpt4 key购买 nike

我注意到我的 Spring Boot 应用程序在使用 Maven 和 jar 启动时的启动时间存在很大差异。例如:

  • 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 Plugin的源码here

关于java - Spring Boot 应用程序 - 启动时间与 "mvn spring-boot:run"和 "java -jar"的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47177193/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com