Gymterview
middle

Что такое Execution Engine

Execution Engine (механизм выполнения) — это компонент JVM, который считывает байт-код из областей данных времени выполнения и исполняет его. Состоит из интерпретатора, JIT-компилятора и сборщика мусора.

Компоненты Execution Engine

Компонент Роль
Interpreter Быстро запускает выполнение байт-кода, но каждый вызов метода интерпретируется заново
JIT Compiler Компилирует повторяющийся (горячий) байт-код в нативный код для ускорения
Garbage Collector Обнаруживает и удаляет неиспользуемые объекты, освобождая память в куче

Интерпретатор

Интерпретатор выполняет байт-код инструкция за инструкцией. Преимущество — быстрый старт, недостаток — при многократном вызове одного метода каждый раз выполняется повторная интерпретация.

JIT-компилятор

JIT-компилятор устраняет недостатки интерпретатора. Когда Execution Engine обнаруживает повторно вызываемый код, JIT-компилятор компилирует весь байт-код в нативный машинный код. Этот нативный код используется при последующих вызовах, повышая производительность.

Составные части JIT-компилятора:

  • Генератор промежуточного кода (Intermediate Code Generator)
  • Оптимизатор кода (Code Optimizer)
  • Генератор целевого кода (Target Code Generator)
  • Профилировщик (Profiler) — определяет горячие точки (часто вызываемые методы)

Garbage Collector

Сборщик мусора (GC) — это механизм автоматического управления памятью. Он обнаруживает и удаляет объекты, на которые больше нет ссылок, освобождая занимаемую ими память в куче. Подробнее о видах сборщиков мусора — в отдельных вопросах ниже.

На собеседовании: ключевой момент — взаимодействие интерпретатора и JIT-компилятора. Интерпретатор обеспечивает быстрый старт, JIT-компилятор ускоряет горячий код. Это компромисс между временем запуска и пиковой производительностью. Не забудьте упомянуть профилировщик как компонент, определяющий, что именно компилировать.