Тезисы
- Class Loader Subsystem — часть JVM, ответственная за загрузку, связывание и инициализацию классов.
- Хранит информацию о загруженных классах и загружает скомпилированные файлы классов (Class Files) в память.
- Сборка мусора здесь не производится, что может привести к
OutOfMemoryException
при создании большого количества классов “на лету”. - Основные этапы работы: загрузка, проверка, связывание и инициализация классов.
- Включает иерархию Classloader, что позволяет гибко управлять загрузкой и безопасностью классов.
Class Loader Subsystem — это часть JVM, которая отвечает за управление процессом загрузки, связывания и инициализации классов. Здесь хранится информация о классах, которые были загружены в память. Он берет скомпилированные файлы классов (Class Files) и загружает их для использования в программе.
Важно отметить, что сборка мусора в этой части JVM не производится, поэтому при создании большого количества классов “на лету” существует риск получения ошибки OutOfMemoryException
.
Основные этапы работы Class Loader Subsystem
- Загрузка (Loading): На этом этапе Class Loader Subsystem находит и загружает файлы классов в память. Используются различные типы Classloader (Bootstrap, Extension, Application), которые обеспечивают доступ к необходимым классам в зависимости от их принадлежности.
- Проверка (Verification): После загрузки классов выполняется проверка их корректности. Это необходимо для предотвращения потенциально опасного кода, который может нарушить работу JVM или привести к сбоям. Проверка включает анализ структуры байт-кода, соответствие стандартам Java и другие меры безопасности.
- Связывание (Linking): Этот этап включает несколько подпроцессов:
- Подготовка (Preparation): Создаются статические поля классов и выделяется память под них, но не происходит их инициализация.
- Разрешение (Resolution): Разрешаются ссылки на другие классы и их методы, чтобы JVM могла корректно работать с зависимостями между классами.
- Инициализация (Initialization): На этом этапе выполняются статические инициализаторы классов и инициализируются статические переменные. Это завершающий этап, который делает класс готовым к использованию.
Мета информация
Область:: 00 Java разработка
Родитель:: Архитектура JVM
Источник::
Автор::
Создана:: 2023-11-06