/ / Aplikácia Spring Boot - rozdiel v čase spustenia s "mvn jar-boot: run" a "java-jar" - java, spring, maven, spring-mvc, spring-boot

Aplikácia Spring Boot - rozdiel v čase spustenia s "mvn spring-boot: run" a "java -jar" - java, spring, maven, spring-mvc, spring-boot

Všimol som si veľkého rozdielu v čase spustenia mojej aplikácie Spring Boot, keď začínam s Mavenom a ako sklenená nádoba. Napríklad:

  • mvn spring-boot:run - 5 sekúnd
  • java -jar myapp.jar - 25 sekúnd

Spustenie súboru jar trvá 5 krát dlhšie. Prečo je to tak? Čo sa deje na pozadí pri spustení aplikácie pomocou aplikácie Maven a ako sklenená nádoba? Je niečo naložené inak? A je možné spustiť súbor jar na čas použitý spoločnosťou Maven?

odpovede:

8 pre odpoveď č. 1

Tento rozdiel by mohol byť spôsobený tým, že spring-boot:run je v skutočnosti spustená aplikácia Spring Boot vo vnútri Maven JVM (ak nie je explicitne nastavené fork argument), keď to beží vnútri Maven JVM to je skutočne beží ako nový Thread nie proces. Vytvorenie vlákna je oveľa rýchlejší ako proces.

ale java -jar príkaz vytvorí proces OS, vytváranie procesov má k nemu pripojené kroky, ako napríklad žiadosť o identifikáciu procesu, pridelenie pamäte atď. myapp.jar bude musieť extrahovať plus JVM nebude mať žiadnu optimalizáciu, pretože to bude čítať .class extrahovaný z jarového súboru prvýkrát. V podstate studený štart, ktorý trvá určitý čas.

Môžete vidieť zdrojový kód pre Maven Spring Boot Plugin tu