«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Виртуальная машина Java: жизненный цикл и загрузчики классов

Виртуальная машина Java: жизненный цикл и загрузчики классов

Опубликовано 16 ноября 2024 г.
Просматривать:330

Виртуальная машина Java (JVM) — это ядро ​​экосистемы Java, предоставляющее все необходимые инструменты для запуска кода Java. Чтобы полностью понять, как он работает, крайне важно понять жизненный цикл этого интерпретатора и его влияние на производительность и оптимизацию приложений Java.

Весь жизненный цикл JVM начинается с фундаментального процесса под названием «Загрузка JVM», который отвечает за создание всей среды выполнения и ее подготовку. Именно в этом контексте: интерпретируются аргументы, передаваемые в командной строке, код JVM выделяется в памяти, инициализируются внутренние структуры данных JVM, начинается управление памятью и, наконец, основной поток приложения переходит в работу. Давайте рассмотрим каждый подпроцесс, описанный в этом параграфе, отдельно:

Аргументы, передаваемые в командной строке, интерпретируются

Когда программа запускается через командную строку, JVM запускает цепочку процессов, ответственных за анализ предоставленных аргументов, которые могут включать параметры инициализации, такие как: -Xms и -Xmx для определения минимального размера и максимальной кучи, область памяти, отвечающая за выделение и создание объектов в контексте приложения — отладочные спецификации или конфигурации даже самого цикла сборщика мусора.

Прежде чем продолжить, важно отметить: для простоты мы будем анализировать сегмент кода, который занимается разбором расширенных аргументов JVM — тех, которые начинаются с -XX.

Для большей ясности мы будем использовать открытый исходный код OpenJDK для дальнейших ссылок. В файле arguments.cpp, расположенном в каталоге src/hotspot/share/runtime.arguments.cpp, функция, которая интерпретирует расширенные параметры (-XX) с помощью CLI, выглядит следующим образом:

Java Virtual Machine: ciclo de vida e Class Loaders

Проведя краткий анализ, функция начинает проверку того, начинается ли переданный аргумент с или -, определяя, является ли флаг логическим, а также следует ли его деактивировать или активировать.

Java Virtual Machine: ciclo de vida e Class Loaders

После этого код начинает извлекать имя флага. Анализируется каждый символ, если он не буквенно-цифровой или не _, он заканчивается (что означает, что имя флага завершено).

Java Virtual Machine: ciclo de vida e Class Loaders

После выполнения проверок и определения имени флага наконец вызывается метод JVMFlag* flag = find_jvm_flag(name, name_len);, чтобы проверить, доступна ли какая-либо конфигурация для предоставленного.

]

Это небольшое описание того, как анализируются наиболее сложные аргументы -XX. Однако в этом же файле, о котором я упомяну, можно найти процессы аргументов, начинающиеся с -X, которые проходят через другую функцию синтаксического анализа:

Java Virtual Machine: ciclo de vida e Class Loaders

Пример флага: -XMS

Java Virtual Machine: ciclo de vida e Class Loaders

СТАТЬЯ В РАЗРАБОТКЕ

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/shyvictor/java-virtual-machine-ciclo-de-vida-e-class-loaders-1ki6?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с [email protected] удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3