From 10e57e47084354e3bcb8de495351fc25fc5aefbf Mon Sep 17 00:00:00 2001 From: Bilalov_Bulat Date: Fri, 3 Jul 2020 18:46:53 +0300 Subject: [PATCH] Update jvm.md --- jvm.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/jvm.md b/jvm.md index 35534d5..bd29956 100644 --- a/jvm.md +++ b/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**