Этап 7 из 11 · ≈ 6 ч

Загрузка классов и JIT

Основа с Senior

Class loaders, интерпретация и JIT-компиляция, бенчмаркинг на JMH.

Что важно знать

  • Загрузчики классов делегируют родителю; свой загрузчик — плагины, серверы приложений.
  • JIT компилирует горячий код после прогрева: инлайнинг, удаление проверок, escape analysis.
  • Наивный замер времени в цикле почти всегда врёт — JMH.

Критерии освоения

Senior ≈ 6 ч

  • Объясняет делегирование загрузчиков классов и утечки метаспейса
  • Объясняет JIT, прогрев и почему микробенчмарки пишут на JMH

Практика. Написать JMH-бенчмарк для двух реализаций и объяснить ловушки (мёртвый код, прогрев).

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Чем отличаются JDK, JRE и JVM?Junior

Вложенность: JVM исполняет байткод, JRE = JVM + стандартные библиотеки для запуска, JDK = JRE + инструменты разработки.

Полный разбор
Что такое class loader и как работает делегирование загрузки классов?Middle

ClassLoader находит байт-код и превращает его в класс. Иерархия: Bootstrap (ядро JDK) → Platform (модули платформы) → Application (classpath). Модель parent-first: запрос сначала идёт к родителю, и только если тот не нашёл — загрузчик ищет сам.

Полный разбор
Какие ошибки чаще всего делают самодельный микробенчмарк бессмысленным?Senior

Нет прогрева — меряется интерпретатор, а не скомпилированный код. Результат не используется — JIT выбрасывает вычисление, меряется пустой цикл. Константный вход — выражение сворачивается при компиляции. Плюс шум GC, кэшей, частоты процессора.

Полный разбор
Что делает JIT-компилятор в JVM?Junior

JIT компилирует часто выполняемые участки байткода в машинный код прямо во время работы программы.

Полный разбор
Какой инструмент обычно используют для корректных Java microbenchmarks?Middle

JMH (Java Microbenchmark Harness) от разработчиков OpenJDK: учитывает прогрев, форки JVM, устранение мёртвого кода, свёртку констант, статистику по итерациям.

Полный разбор
Что такое escape analysis и какой эффект она даёт?Senior

JIT выясняет, покидает ли объект метод или поток. Если нет — скалярная замена: объект разбирается на поля в регистрах, аллокация исчезает. Плюс снятие блокировок на объекте, не видимом другим потокам.

Полный разбор

Разборы темы

← Вся карта «Java»

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования