Из того, что я могу сказать, свойство optimizedLaunch
добавляет только следующие два аргумента в команду запуска JVM и ничего больше:
-XX:TieredStopAtLevel=1
-Xverify:none
Последний не используется, если вы используете Java 13 или более позднюю версию.
Эти аргументы используются для ускорения запуска JVM в целях разработки и тестирования. Это происходит за счет ограничения способности JVM оптимизировать себя во время выполнения. Нет ничего необычного в том, что при отключении оптимизаций времени выполнения наблюдается такая низкая производительность.
Однако, если вы отключите optimzedLaunch для определения приоритетов производительности времени выполнения, вы также должны увидеть увеличение времени запуска на JVM. В одном из моих проектов Spring Boot время запуска увеличилось с ~ 7 до 13 с. Таким образом, в реальном проекте на этапе разработки вы должны решить, хотите ли вы оптимизировать его для быстрого запуска или быстрого выполнения.
Когда вы находитесь в точке, где вы будете запускать свое приложение в производственных условиях, Скорее всего, вы будете использовать файл jar, созданный задачей bootJar
(или dist
). Здесь вы несете ответственность за предоставление аргументов JVM. Если вы этого не предоставите, вы получите поведение JVM по умолчанию, которое заключается в использовании многоуровневой компиляции (соответствует optimzedLaunch=false
).