digital-garden/dev/java/Class Loader Subsystem.md
Struchkov Mark fed7b2b637
All checks were successful
continuous-integration/drone/push Build is passing
Обновление
2024-11-04 19:12:20 +03:00

4.5 KiB
Raw Blame History

aliases tags date
maturity/🌱
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

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

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

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

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

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