1
1
Fork 0

add Execution Engine

This commit is contained in:
scorpioa 2020-02-27 20:02:54 +02:00 committed by Enchased Horse
parent cca6a5a73a
commit 93af17f338
1 changed files with 41 additions and 3 deletions

44
jvm.md
View File

@ -26,7 +26,7 @@ JVM работает с примитивными значениями (целы
которые реализуют интерфейсы соответственно.
За что отвечает JVM:
###### За что отвечает JVM:
1. Загрузка, проверка (верификация) и исполнение байт кода;
2. Предоставление среды выполнения для выполнения байт-кода;
3. Управление памятью и очисткой мусора (Garbage collection);
@ -91,6 +91,7 @@ JVM выделяет множество областей данных во вр
Виртуальная машина Java может поддерживать много потоков исполнения одновременно. Каждый поток виртуальной машины Java имеет свой собственный регистр PC (programm counter).
В любой момент каждый поток виртуальной машины Java выполняет код одного метода, а именно текущий метод для этого потока.
Если этот метод не является native, регистр pc содержит адрес инструкции виртуальной машины Java, выполняемой в настоящее время.
Коротко говоря: для одного потока существует один PCR, который создается при запуске потока. PCR хранит адрес выполняемой сейчас инструкции JVM.
2.2. Java Virtual Machine Stacks
@ -151,7 +152,7 @@ Frame перестает быть текущим, если его метод в
Каждый frame содержит массив переменных, известных как его локальные переменные. Длина массива локальных переменных frame определяется во время компиляции
и предоставляется в двоичном представлении класса или интерфейса вместе с кодом для метода, связанного с frame-ом.
Еденичная локальная переменная может хранить значение типа: boolean, byte, char, short, int, float, reference, or returnAddress.
Пара локальных переменных может хранить сначение типов: long или double.
Пара локальных переменных может хранить значение типов: long или double.
Локальные переменные адресуются путем индексации. Индекс первой локальной переменной равен нулю.
@ -198,4 +199,41 @@ JVM использует локальные переменные для пере
Вызов метода завершается преждевременно, если при выполнении инструкции JVM в методе выдает исключение, и это исключение не обрабатывается в методе.
Выполнение команды **athrow** также приводит к явному выбрасыванию исключения, и если исключение не перехватывается текущим методом,
приводит к неожиданному завершению вызова метода. Вызов метода, который завершается внезапно, никогда не возвращает значение своему вызывающему.
приводит к неожиданному завершению вызова метода. Вызов метода, который завершается внезапно, никогда не возвращает значение своему вызывающему.
###### 4. Execution Engine
Байт-код, назначенный **run-time data areas**, будет выполнен **execution engine**. Механизм выполнения считывает байт-код и выполняет его по частям.
4.1. Interpreter
Интерпретатор интерпретирует байт-код быстро, но выполняется медленно. Недостаток интерпретатора заключается в том, что когда один метод вызывается несколько раз, каждый раз требуется новая интерпретация.
4.2. JIT Compiler
JIT-компилятор устраняет недостатки интерпретатора. Механизм выполнения будет использовать помощь интерпретатора при преобразовании байт-кода,
но когда он находит повторный код, он использует JIT-компилятор, который компилирует весь байт-код и изменяет его на собственный код.
Этот нативный код будет использоваться непосредственно для повторных вызовов методов, которые улучшают производительность системы.
4.2.1. Генератор промежуточного кода (Intermediate Code Generator)
Производит промежуточный код.
4.2.2.Code Optimizer
Отвечает за оптимизацию промежуточного кода, сгенерированного выше.
4.2.3. Генератор целевого кода (Target Code Generator)
Отвечает за генерацию машинного кода или родной код.
4.2.4. Профилировщик (Profiler)
Специальный компонент, отвечающий за поиск горячих точек, то есть, вызывается ли метод несколько раз или нет.
4.3. Garbage Collector
Полезные ссылки с доп. информацией:
- https://www.developer.com/java/data/understanding-the-jvm-architecture.html
- https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html
- https://dzone.com/articles/understanding-jvm-internals