Перейти к содержимому
Java

Когда JVM инициализирует класс и запускает static-блок?

Загрузка класса ещё не означает выполнение static-кода: инициализация запускается только при активном использовании.

Middle26 августа 2026 г.
JVM

static-инициализация выполняется перед первым активным использованием класса. Типичные триггеры: создание экземпляра через new, вызов статического метода, чтение или запись обычного статического поля и Class.forName() без отключённой инициализации.

Получение Foo.class, загрузка подкласса или чтение compile-time константы сами по себе могут не запустить <clinit>. Поэтому «класс уже загружен» и «его static-код уже выполнился» — разные утверждения.

Подробнее: Как JVM загружает и инициализирует классы.

← Все вопросы и ответы