В HotSpot появился AOT-кэш, который сохраняет уже разобранные, загруженные и слинкованные классы приложения. Это снижает warm-up time и ускоряет выход на пик после старта.
JDK 24:
Трёхшаговый процесс train+assemble+run (JEP 483).
Training:-XX:AOTMode=record -XX:AOTConfiguration=app.aotconf
Создает конфигурацию, необходимую для дальнейшего построения кеша.
Assembly:-XX:AOTMode=create ... -XX:AOTCache=app.aotсобирает кэш.
Run:-XX:AOTCache=app.aotиспользует его при запуске.
JDK 25:
В кэш добавили профили часто выполняемых методов (JEP 515), из-за чего JIT может стартовать компиляцию раньше и прогрев ускоряется.
Также появился упрощённый workflow в 2 шага через-XX:AOTCacheOutput=app.aot(JEP 514), но он может требовать 2x памяти: при-Xms2g -Xmx2gокружению нужно около 4 ГБ, потому что сборка кэша запускается с отдельной кучей того же размера.
Чтобы кэш применился, окружения должны совпадать: тот же JDK/OS/архитектура, classpath только из JAR без wildcard/каталогов, prod classpath - надмножество training.
Проверка:-XX:AOTMode=on.
JDK 26:
С JDK 26 сняли ограничение по ZGC (JEP 516). Для диагностики: -Xlog:aot,class+path=info. Кэш нужно пересоздавать при любой пересборке приложения или обновлении библиотек/JDK, иначе возможны краши и странное поведение.📚 Полный текст по ссылке: https://habr.com/ru/companies/spring_aio/articles/995398/
