簡體   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