03.06
🚀 Двоичная Java: CDS, CRaC и AOT для ускорения запуска и прогрева JVM
🔍 Миф №1 о Java:
> «Java — это медленно»
Да, лет 20 назад это могло быть правдой. Но JVM с тех пор прошла огромный путь.
В классическом варианте Java-байткод исполняется через интерпретатор — по сути, цикл со switch-case, где инструкции переводятся на лету. Это действительно не быстро.
📈 Первый прорыв — JIT-компиляция (Just-in-Time): часто вызываемые методы начали компилироваться в машинный код во время выполнения. Это дало солидный прирост производительности.
💡 Но на этом оптимизации не остановились. Сегодня в арсенале JVM есть:
-
CDS (Class Data Sharing) — сериализация внутренних представлений классов, чтобы ускорить их загрузку из архива.
-
CRaC (Coordinated Restore at Checkpoint) — снятие снепшота уже «прогретой» JVM, чтобы потом мгновенно восстановить её в этом состоянии.
-
AOT (Ahead-of-Time compilation) — компиляция Java-приложения в нативный бинарник заранее, без участия JIT в рантайме.
🧪 А на подходе ещё Project Leyden, который обещает сделать JVM по-настоящему предсказуемой и «запускаемой с кнопки» — благодаря condensers и training runs.
🎤 Обо всём этом я рассказывал на HighLoad++ 2024. Видео пока не выложили, но мои друзья из Axiom JDK подготовили текстовую версию доклада 📄
📎 Читайте: «Двоичная Java: CDS, CRaC и AOT для ускорения запуска и прогрева JVM»
еще контент в этом сообществе
еще контент в этом соообществе
03.06
войдите, чтобы увидеть
и подписаться на интересных профи