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úndjava -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ď č. 1Tento 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