Что важно знать
- Загрузчики классов делегируют родителю; свой загрузчик — плагины, серверы приложений.
- JIT компилирует горячий код после прогрева: инлайнинг, удаление проверок, escape analysis.
- Наивный замер времени в цикле почти всегда врёт — JMH.
Class loaders, интерпретация и JIT-компиляция, бенчмаркинг на JMH.
Практика. Написать JMH-бенчмарк для двух реализаций и объяснить ловушки (мёртвый код, прогрев).
Вложенность: JVM исполняет байткод, JRE = JVM + стандартные библиотеки для запуска, JDK = JRE + инструменты разработки.
ClassLoader находит байт-код и превращает его в класс. Иерархия: Bootstrap (ядро JDK) → Platform (модули платформы) → Application (classpath). Модель parent-first: запрос сначала…
Нет прогрева — меряется интерпретатор, а не скомпилированный код. Результат не используется — JIT выбрасывает вычисление, меряется пустой цикл. Константный вход — выражение…
JIT компилирует часто выполняемые участки байткода в машинный код прямо во время работы программы.
JMH (Java Microbenchmark Harness) от разработчиков OpenJDK: учитывает прогрев, форки JVM, устранение мёртвого кода, свёртку констант, статистику по итерациям.
JIT выясняет, покидает ли объект метод или поток. Если нет — скалярная замена: объект разбирается на поля в регистрах, аллокация исчезает. Плюс снятие блокировок на объекте, не…
Жизненный цикл класса (loading/linking/initialization), иерархия загрузчиков с делегированием, триггеры инициализации и изоляция.
Tiered compilation C1/C2, ключевые оптимизации JIT (inlining, escape analysis), деоптимизация и прогрев, корректные микробенчмарки на JMH.
На живом собеседовании sotto слышит вопрос интервьюера и показывает короткий ответ и план. Оставьте контакт — пришлём доступ и промокод.