Виртуальная машина Java - загрузчик классов

JVM динамически управляет процессом загрузки, связывания и инициализации классов и интерфейсов. В процессе загрузкиJVM finds the binary representation of a class and creates it.

В процессе связывания loaded classes are combined into the run-time state of the JVM so that they can be executed during the initialization phase. JVM в основном использует таблицу символов, хранящуюся в пуле констант времени выполнения, для процесса связывания. Инициализация состоит из собственноexecuting the linked classes.

Типы погрузчиков

В BootStrapзагрузчик классов находится на вершине иерархии загрузчиков классов. Он загружает стандартные классы JDK в каталог JRE lib .

В Extension Загрузчик классов находится в середине иерархии загрузчиков классов и является непосредственным потомком загрузчика классов начальной загрузки и загружает классы в каталог lib \ ext JRE.

В ApplicationЗагрузчик классов находится в нижней части иерархии загрузчиков классов и является непосредственным потомком загрузчика классов приложения. Он загружает jar-файлы и классы, указанные вCLASSPATH ENV переменная.

Связывание

Процесс связывания состоит из следующих трех шагов -

Verification- Это выполняется верификатором байт-кода, чтобы убедиться, что сгенерированные файлы .class (байт-код) действительны. В противном случае выдается ошибка и процесс связывания останавливается.

Preparation - Память выделяется для всех статических переменных класса, и они инициализируются значениями по умолчанию.

Resolution- Все символьные ссылки на память заменяются исходными ссылками. Для этого используется таблица символов в постоянной памяти времени выполнения области методов класса.

Инициализация

Это заключительный этап процесса загрузки классов. Статическим переменным присваиваются исходные значения, и выполняются статические блоки.