Struchkov Mark
fed7b2b637
All checks were successful
continuous-integration/drone/push Build is passing
4.5 KiB
4.5 KiB
aliases | tags | date | |
---|---|---|---|
|
2023-11-06 |
Тезисы
- Class Loader Subsystem — часть Java Virtual Machine, ответственная за загрузку, связывание и инициализацию классов.
- Хранит информацию о загруженных классах и загружает скомпилированные файлы классов (Class Files) в память.
- gc/Garbage Collector здесь не производится, что может привести к
OutOfMemoryException
при создании большого количества классов "на лету". - Основные этапы работы: загрузка, проверка, связывание и инициализация классов.
- Включает иерархию ClassLoader, что позволяет гибко управлять загрузкой и безопасностью классов.
Class Loader Subsystem — это часть Java Virtual Machine, которая отвечает за управление процессом загрузки, связывания и инициализации классов. Здесь хранится информация о классах, которые были загружены в память. Он берет скомпилированные файлы классов (Class Files) и загружает их для использования в программе.
Важно отметить, что gc/Garbage Collector в этой части JVM не производится, поэтому при создании большого количества классов "на лету" существует риск получения ошибки OutOfMemoryException
.
Основные этапы работы Class Loader Subsystem
- Загрузка (Loading): На этом этапе Class Loader Subsystem находит и загружает файлы классов в память. Используются различные типы ClassLoader (Bootstrap, Extension, Application), которые обеспечивают доступ к необходимым классам в зависимости от их принадлежности.
- Проверка (Verification): После загрузки классов выполняется проверка их корректности. Это необходимо для предотвращения потенциально опасного кода, который может нарушить работу JVM или привести к сбоям. Проверка включает анализ структуры байт-кода, соответствие стандартам Java и другие меры безопасности.
- Связывание (Linking): Этот этап включает несколько подпроцессов:
- Подготовка (Preparation): Создаются статические поля классов и выделяется память под них, но не происходит их инициализация.
- Разрешение (Resolution): Разрешаются ссылки на другие классы и их методы, чтобы JVM могла корректно работать с зависимостями между классами.
- Инициализация (Initialization): На этом этапе выполняются статические инициализаторы классов и инициализируются статические переменные. Это завершающий этап, который делает класс готовым к использованию.
Мета информация
Область:: ../../meta/zero/00 Java разработка Родитель:: Архитектура JVM Источник:: Автор:: Создана:: 2023-11-06