JVM — это абстрактная машина, которая используется для выполнения программ Java. В Java исходный код преобразуется в байт-код, который после дальнейшего преобразования в машинный код передается в память виртуальной машиной Java. Короче говоря, JVM предоставляет среду выполнения для выполнения байт-кода Java, что делает его компонентом среды выполнения Java (JRE). В целом, JVM отвечает за загрузку, связывание и инициализацию.
JVM-архитектура
Внутренняя архитектура виртуальной машины Java состоит из трех основных частей.
- Загрузчик классов
- Область памяти
- Исполнительный механизм
Вот визуальное представление архитектуры JVM.
Ниже подробно описаны все части виртуальной машины Java.
1. Загрузчик классов
Загрузчик классов в JVM относится к подсистеме, отвечающей за загрузку файлов. Он загружает Java-программу каждый раз, когда мы запускаем Java-программу. Java предоставляет следующие загрузчики классов.
а. Bootstrap ClassLoader
Суперкласс Extension ClassLoader, отвечающий за загрузку файла rt.jar.
б. Extension ClassLoader
Дочерний элемент Bootstrap Classloader и родитель System/Application ClassLoader, расширение classloader загружает JAR-файлы, которые сохраняются в каталоге.
в. Система/приложение ClassLoader
Этот загрузчик классов загружает файлы классов из пути к классам и является дочерним элементом Extension ClassLoader.
2. Область памяти
Область памяти JVM состоит из следующих частей.
а. Область метода
Область методов предназначена для сохранения структуры классов, таких как данные метода или данные поля, пул среды выполнения и код для методов.
б. куча
Куча — это область данных времени выполнения, в которой размещаются объекты .
в. Стеки
Стек отвечает за хранение кадров, локальных переменных и частичных результатов. Он играет важную роль в вызове метода и возврате метода. Каждый раз, когда создается поток, одновременно создается частный стек JVM для этого конкретного потока, и каждый раз при вызове метода создается новый фрейм, и как только вызов завершается, фрейм уничтожается.
д. Регистры ПК
Он отвечает за хранение адресов во время выполнения инструкций JVM.
е. Стеки нативных методов
Он отвечает за хранение всех собственных методов, необходимых в приложении.
3. Исполнительный механизм
Исполнительный механизм состоит из следующего.
а. Устный переводчик
Он выполняет инструкции после чтения потока байт-кода.
б. Компилятор Just-in-time (JIT)
JIT повышает производительность за счет одновременной компиляции частей байт-кода с аналогичными функциями, что в дальнейшем сокращает общее время компиляции.
c.Сборщик мусора
Он используется для сбора объектов, на которые нет ссылок, и их удаления для освобождения памяти.
Собственный интерфейс метода
Он помогает взаимодействовать с приложениями, написанными на разных языках, таких как C, C++ и т. д. Он также отвечает за помощь коду Java, работающему в JVM, для вызова библиотек и собственных приложений.
Библиотеки методов
Он состоит из собственных библиотек (C, C++), необходимых для Execution Engine.
Вывод
Виртуальная машина Java (JVM) — это абстрактная машина, созданная для выполнения программ Java. Архитектура JVM состоит из трех основных частей: загрузчика классов, области памяти и механизма выполнения. Область памяти и исполнительный механизм также состоят из некоторых частей, которые имеют разные функциональные возможности. В этом руководстве объясняется архитектура виртуальной машины Java (JVM) с выделением функций ее различных компонентов.