Тезисы

  • Class Loader Subsystem — часть JVM, ответственная за загрузку, связывание и инициализацию классов.
  • Хранит информацию о загруженных классах и загружает скомпилированные файлы классов (Class Files) в память.
  • Сборка мусора здесь не производится, что может привести к OutOfMemoryException при создании большого количества классов “на лету”.
  • Основные этапы работы: загрузка, проверка, связывание и инициализация классов.
  • Включает иерархию Classloader, что позволяет гибко управлять загрузкой и безопасностью классов.

Class Loader Subsystem — это часть JVM, которая отвечает за управление процессом загрузки, связывания и инициализации классов. Здесь хранится информация о классах, которые были загружены в память. Он берет скомпилированные файлы классов (Class Files) и загружает их для использования в программе.

Важно отметить, что сборка мусора в этой части JVM не производится, поэтому при создании большого количества классов “на лету” существует риск получения ошибки OutOfMemoryException.

Основные этапы работы Class Loader Subsystem

  1. Загрузка (Loading): На этом этапе Class Loader Subsystem находит и загружает файлы классов в память. Используются различные типы Classloader (Bootstrap, Extension, Application), которые обеспечивают доступ к необходимым классам в зависимости от их принадлежности.
  2. Проверка (Verification): После загрузки классов выполняется проверка их корректности. Это необходимо для предотвращения потенциально опасного кода, который может нарушить работу JVM или привести к сбоям. Проверка включает анализ структуры байт-кода, соответствие стандартам Java и другие меры безопасности.
  3. Связывание (Linking): Этот этап включает несколько подпроцессов:
    • Подготовка (Preparation): Создаются статические поля классов и выделяется память под них, но не происходит их инициализация.
    • Разрешение (Resolution): Разрешаются ссылки на другие классы и их методы, чтобы JVM могла корректно работать с зависимостями между классами.
  4. Инициализация (Initialization): На этом этапе выполняются статические инициализаторы классов и инициализируются статические переменные. Это завершающий этап, который делает класс готовым к использованию.

Мета информация

Область:: 00 Java разработка
Родитель:: Архитектура JVM
Источник::
Автор::
Создана:: 2023-11-06

Дополнительные материалы

Дочерние заметки