我注意到在使用Maven和jar开始时,我的Spring Boot应用程序的启动时间有很大差异。例如:
mvn spring-boot:run
- 5秒java -jar myapp.jar
- 25秒启动jar文件需要5倍的时间。为什么会这样?使用Maven和jar启动应用程序时后台发生了什么?是不是加载了什么?是否有可能在Maven使用的时间内启动jar文件?
答案 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
的源代码