Update jvm.md
This commit is contained in:
parent
2c5098396c
commit
10e57e4708
14
jvm.md
14
jvm.md
|
@ -23,14 +23,14 @@ JVM работает с 2мя типами данных: примитивные
|
|||
JVM работает с примитивными значениями (целыми числами и числами с плавающей точкой). По сути, JVM - это 32-битная машина.
|
||||
Типы `long` и `double`, которые являются 64-битными, поддерживаются изначально, но занимают две единицы памяти в `frame's local`
|
||||
или стеке операндов, поскольку каждая единица составляет 32 бита.
|
||||
Типы `boolean`, `byte`, `short` и `char` имеют расширенный знак (кроме `char` с нулевым расширением) и работают как 32-разрядные целые числа, так же как и типы `int`.
|
||||
Типы `boolean`, `byte`, `short` и `char` имеют расширенный знак (кроме `char` с нулевым расширением) и работают как 32-разрядные целые числа, так же, как и типы `int`.
|
||||
Меньшие типы имеют только несколько специфических для типа инструкций для загрузки, хранения и преобразования типов.
|
||||
`boolean` значение работает как 8-битное `byte` значения, где 0 представляет значение **false**, а 1 - значение **true**.
|
||||
|
||||
**Типы ссылок и значения**
|
||||
|
||||
Существует три типа ссылочных типов: типы классов, типы массивов и типы интерфейсов.
|
||||
Их значения являются ссылками на динамически создаваемые экземпляры классов, массивы или экземпляры классов или массивы,
|
||||
Их значения являются ссылками на динамически создаваемые экземпляры классов, массивы или экземпляры классов,
|
||||
которые реализуют интерфейсы соответственно.
|
||||
|
||||
[к оглавлению](#jvm)
|
||||
|
@ -87,7 +87,7 @@ JVM работает с примитивными значениями (целы
|
|||
## Области данных времени выполнения
|
||||
|
||||
Run-Time Data Areas. JVM выделяет множество областей данных во время выполнения, к-рые используются во время выполнения программы. Некоторые участки данных
|
||||
созданы JVM во время старта и уничтожаются во время её выключения. Другие создаются для каждого потока и уничтожаются когда поток уничтожается.
|
||||
созданы JVM во время старта и уничтожаются во время её выключения. Другие создаются для каждого потока и уничтожаются, когда поток уничтожается.
|
||||
|
||||
**The pc Register (PCR)**
|
||||
|
||||
|
@ -116,7 +116,7 @@ JVM не предполагает какого-либо конкретного
|
|||
**Method Area**
|
||||
|
||||
JVM имеет область методов, которая является общей для всех потоков. Она хранит структуры для каждого класса, такие как пул констант, данные полей и методов,
|
||||
а также код для методов и конструкторов, включая специальные методы, используемые при инициализации классов и экземпляров и инициализации интерфейса.
|
||||
а также код для методов и конструкторов, включая специальные методы, используемые при инициализации классов и экземпляров, и инициализации интерфейса.
|
||||
Хотя область метода является логически частью кучи, простые реализации могут не обрабатываться собиращиком мусора. Область метода может иметь
|
||||
фиксированный размер или может быть расширена в соответствии с требованиями вычислений и может быть сокращена, если большая область метода становится ненужной.
|
||||
|
||||
|
@ -141,7 +141,7 @@ Frame используется для хранения данных и част
|
|||
является ли это завершение нормальным или резким (он генерирует неперехваченное исключение). Frames выделяются из стека потока, создающего frame.
|
||||
Каждый frame имеет свой собственный массив локальных переменных, свой собственный стек операндов и ссылку на пул констант во время выполнения класса текущего метода.
|
||||
Размеры массива локальных переменных и стека операндов определяются во время компиляции и предоставляются вместе с кодом для метода, связанного с фреймом.
|
||||
Таким образом, размер структуры данных frame-а зависит только от реализации виртуальной машины Java, и память для этих структур может быть выделена одновременно при вызове метода.
|
||||
Таким образом, размер структуры данных, frame-а зависит только от реализации виртуальной машины Java, и память для этих структур может быть выделена одновременно при вызове метода.
|
||||
|
||||
Только один frame активен в любой точке данного потока управления - метода выполнения, и это frame называется текущим, а его метод известен как текущий метод.
|
||||
Класс, в котором определен текущий метод, является текущим классом. Операции над локальными переменными и стеком операндов обычно выполняются со ссылкой на текущий frame.
|
||||
|
@ -202,7 +202,7 @@ JVM использует локальные переменные для пере
|
|||
**Резкое завершение вызова метода**
|
||||
|
||||
Вызов метода завершается преждевременно, если при выполнении инструкции JVM в методе выдает исключение, и это исключение не обрабатывается в методе.
|
||||
Выполнение команды **athrow** также приводит к явному выбрасыванию исключения, и если исключение не перехватывается текущим методом,
|
||||
Выполнение команды **athrow** также приводит к явному выбрасыванию исключения, и, если исключение не перехватывается текущим методом,
|
||||
приводит к неожиданному завершению вызова метода. Вызов метода, который завершается внезапно, никогда не возвращает значение своему вызывающему.
|
||||
|
||||
[к оглавлению](#jvm)
|
||||
|
@ -213,7 +213,7 @@ JVM использует локальные переменные для пере
|
|||
|
||||
**Interpreter**
|
||||
|
||||
Интерпретатор интерпретирует байт-код быстро, но выполняется медленно. Недостаток интерпретатора заключается в том, что когда один метод вызывается несколько раз, каждый раз требуется новая интерпретация.
|
||||
Интерпретатор интерпретирует байт-код быстро, но выполняется медленно. Недостаток интерпретатора заключается в том, что, когда один метод вызывается несколько раз, каждый раз требуется новая интерпретация.
|
||||
|
||||
**JIT Compiler**
|
||||
|
||||
|
|
Loading…
Reference in New Issue