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