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

时间:2017-11-08 10:25:15

标签: java spring maven spring-mvc spring-boot

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

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

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

1 个答案:

答案 0 :(得分:8)

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

myapp.jar命令将创建一个操作系统进程,进程创建有附加的步骤,如请求进程ID,分配内存等。最重要的是.class将需要提取加上JVM将没有任何优化,因为它将首次读取从jar文件中提取的if ($campaign['type'] == 'blended') { $objWorkSheet->setCellValueByColumnAndRow($col++, $row, "$launch_date,\n email: {$email_launch_date}, \n tm: {$tm_launch_date}"); $objPHPExcel->getActiveSheet()->getAlignment()->setWrapText(true); 。基本上冷启动需要时间。

您可以看到Maven Spring Boot Plugin here

的源代码