![](/img/trans.png)
[英]“mvn spring-boot:run” vs “java jar target/xxx.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.