Комментарии 3
Функция CDS, которая значительно сокращает время запуска и потребление памяти, была интегрирована в Spring Framework 6.1 в ноябре 2023 года. Теперь Spring Boot поддерживает создание CDS-совместимой структуры из fat JAR-файла с помощью режима "tools":
В случае реальных приложений пока не видел "значительного сокращения" :) Было прикольно увидеть чей то реальный опыт, где добились какого то значительного ускорения
Очень сомнительно, что в рантайме будет профит по времени запуска. На прогрев JVM больше влияют параметры типа TieredCompilation. А по памяти разницы вообще не должно быть. Мы же не грузим в память всю либу зависимостей, а только используемые классы в Metaspace по мере обращения к ним.
Практическая польза может быть в случае использования контейнеров. Если мы значительное число релизов едем не обновляя зависимости, то легко можно сформировать docker image с зависимостями и вкатывать следующим слоем application. Можно чуть-чуть сэкономить на времени сборки. А если артефакт должен отправлятьься в географически распределенные ДЦ, то и немало.
Многослойные Docker
-образы умеет генерировать GoogleContainerTools/jib:
Внешние релизные зависимости.
Снапшотные зависимости.
Модули внутри проекта.
Ресурсы собираемого модуля.
Классы собираемого модуля.
Дополнительные настроенные директории.
В результате основной объём оседает в первом слое внешних завимостейи меняется очень редко, чаще меняется слой внутренних модулей и слои с содержимым собираемого модуля.
Причём jib
подключается и Maven
и к Gradle
проектам буквально в пару кликов.
Spring Boot 3.3: повышение производительности, безопасности и observability