Узел питания Примечания SpringBoot3 ⑨ понимание AOT и GraalVM

9 Понимание AOT и GraalVM

9.1 Технологии, обеспечивающие производительность

Что такое AOT :
компиляция с опережением времени: предварительная компиляция (перед компиляцией). Она описана в JEP-295 и добавлена ​​в качестве экспериментальной функции в Java 9.
AOT — это способ повысить производительность программ Java, особенно время запуска JVM. Скомпилируйте классы Java в машинный код перед запуском виртуальной машины. Улучшите время запуска для малых и больших приложений Java.

JIT (как раз вовремя) :
JIT — это технология JVM для повышения скорости выполнения JVM выполняет байт-код Java и компилирует часто исполняемый код в собственный код. Это называется компиляцией точно в срок (JIT).
Когда JVM обнаруживает, что определенный метод или блок кода запускается особенно часто, он будет считать это «кодом горячей точки». Затем JIT скомпилирует «горячий код» в машинный код, относящийся к локальной машине, оптимизирует его, а затем кэширует скомпилированный машинный код для следующего использования.
JVM решает, какой код JIT-компилировать, основываясь на информации о профилировании, собранной во время выполнения . JIT-компиляторы работают быстро, но Java-программы настолько велики, что для полного прогрева JIT требуется много времени. Редко используемые методы Java могут вообще не компилироваться.

Особенности: Когда программа выполняется, компилируется во время выполнения кода. JIT-компиляция требует дополнительных затрат времени и места.Только тот код, который выполняется часто, достоин компиляции.

AOT: статический
JIT: динамический

9.2 Собственное изображение

собственное изображение: собственное изображение (собственное изображение)

родной образ — это технология для заблаговременной компиляции кода Java в автономный исполняемый файл, называемый
родным образом). Изображения — это файлы для исполнения.
Файл зеркала (исходное изображение) создается с помощью технологии построения зеркала (инструмента).
Родной образ — это не только технический термин, но и относящийся к его сгенерированному исполняемому файлу.
собственный образ поддерживает языки на основе jvm, такие как Java, Scala, Clojure, Kotlin

Содержимое файла нативного образа включает в себя классы приложения, классы из его зависимостей, классы библиотеки времени выполнения и статически связанный нативный код из JDK (бинарные файлы можно запускать напрямую без дополнительной установки JDK), а нативный образ запускается на GraalVM, с более быстрым время запуска и более низкие накладные расходы памяти во время выполнения.

В режиме AOT компилятор выполняет всю работу по компиляции во время сборки проекта, основная идея здесь — перенести всю «тяжелую работу» — дорогостоящие вычисления — на время сборки. То есть подготовить все, что должен выполнить проект, например, определенные классы выполнения, файлы и т. д. Наконец, подготовленный файл выполняется, и приложение в это время может быстро запуститься. Уменьшите нагрузку на память и процессор (без компиляции JIT во время выполнения). Потому что все предварительно вычислено и предварительно скомпилировано.

9.3 Конструктор собственных образов

Native Image Builder: это утилита, которая обрабатывает все классы приложения и их зависимости, включая классы из JDK. Он статически анализирует эти данные, чтобы определить, какие классы и методы доступны во время выполнения приложения. Затем он предварительно компилирует доступный код и данные в собственные исполняемые файлы для конкретных операционных систем и архитектур.

9.4 GraalVM

GraalVM — это высокопроизводительный дистрибутив JDK, предназначенный для ускорения приложений, написанных на Java и других языках JVM, с поддержкой JavaScript, Ruby, Python и многих других популярных языков. Возможности полиглота GraalVM позволяют смешивать несколько языков программирования в одном приложении, устраняя при этом затраты на вызовы на иностранном языке. GraalVM — это виртуальная машина, поддерживающая несколько языков.

GraalVM — это альтернатива OpenJDK, которая включает в себя инструмент под названием собственный образ, поддерживающий компиляцию с опережением (AOT). GraalVM быстрее выполняет собственные файлы образов, использует меньше ЦП и памяти и имеет меньший размер диска. Это делает Java более конкурентоспособным в облаке.

В настоящее время основное внимание AOT уделяется возможности развертывания приложений Spring в виде собственных образов с использованием GraalVM. Решение GraalVM используется в Spring Boot 3 для обеспечения поддержки Native Image.

Инструмент «собственного образа» GraalVM принимает байт-код Java в качестве входных данных и выводит собственный исполняемый файл. Для этого инструмент выполняет статический анализ байт-кода. Во время анализа инструмент ищет весь код, который на самом деле использует ваше приложение, и отсеивает все лишнее. Нативный образ является закрытым статическим анализом и компиляцией, не поддерживает динамическую загрузку классов, все зависимости, необходимые для работы программы, дорабатываются на этапе статического анализа

9.5 Этапы работы АОТ:

Используйте SpringBoot или Spring для создания проекта, собственная сборка образа GraalVM создает собственный файл образа и выполняет файл образа на GraalVM.

Supongo que te gusta

Origin blog.csdn.net/f5465245/article/details/130152164
Recomendado
Clasificación