Как работает JVM?
1. загрузчик классов()
2. Область памяти
3. Исполнительный движок
1. загрузчик классов()
Процесс загрузки, связывания и инициализации используется JVM, чтобы сделать типы доступными для исполняемой программы.
Загрузка
Его основная задача — загрузить класс в память. (Ex.Boostrap загрузчик классов, настраиваемый загрузчик классов)
Hello.java › Hello.class › Загрузка JVM (требуется полное имя класса (com.company.sample…), переменная информация, непосредственная родительская информация, класс или интерфейс или перечисление)
Когда класс загружается, JVM создает объект в типе данных java из файла класса.
Связывание
Три шага в процессе связывания заключаются в следующем:
Проверка — при попытке загрузить класс Java есть подпрограмма, называемая проверкой байт-кода. Он проверит, исходит ли это от действительного компилятора, имеет ли он исправленную структуру и имеет ли этот файл класса исправленное форматирование. JVM генерирует исключение во время выполнения, называемое verifierException, если какое-либо из этих условий не выполняется.
Подготовка — при использовании переменной уровня экземпляра или статической переменной уровня в части подготовки класса для нее будет назначено значение по умолчанию.
Разрешение — Приходится все делать на некоторых языках ассемблера. В Java мы можем создавать собственные классы для разных сценариев. Java позволяет нам использовать специфические для предметной области термины, такие как Сотрудник/Студент. JVM заменяет символические ссылки прямыми ссылками до достижения машинного уровня.
Инициализация
Это последний шаг в процедуре загрузки классов. Здесь исходные значения присваиваются статическим переменным, и выполняются статические блоки.
2. Область памяти
✓ Класс загрузит всю информацию о классе в область методов в памяти при загрузке. Каждая JVM имеет только одну область методов.
✓ Область памяти heap — это место, где хранится вся информация об объекте. Для каждой JVM есть только одна область кучи.
✓ Стек хранит информацию о методе. За нить.
✓ Регистры ПК содержат информацию о следующем выполнении. За нить.
✓ Область собственного метода, при доступе к любому собственному методу в программе она предоставляет возможность хранить собственный метод и информацию о методе. За нить.
3. Исполнительный движок
Исполнительный механизм является центральным компонентом JVM. Он взаимодействует с различными ячейками памяти JVM. Каждый поток работающей программы является собственным экземпляром механизма выполнения. Механизм выполнения запускает байтовый код, который загружается в области данных времени выполнения JVM через загрузчик классов. Механизм выполнения выполняет файлы классов Java.