
- •JAVA-ТЕХНОЛОГИЯ
- •Виртуальная машина
- •Достоинства
- •Недостатки
- •Виртуальная машина Java
- •Архитектура Java VM
- •Типы данных
- •Регистр PC (счетчик
- •Куча
- •Область методов (1/2)
- •Область методов (2/2)
- •Константный пул
- •Стековый фрейм (stack frame)
- •Стеки(1/2)
- •Стеки(2/2)
- •Локальные переменные
- •Возврат из методов
- •Инструкции(1/4).
- •Инструкции(2/4)
- •Инструкции(3/4)
- •Инструкции(4/4)
- •Java HotSpot
- •Особенности
- •JIT и HotSpot(1/2)
- •JIT и HotSpot(2/2)
- •Мониторинг
- •Class-файлы
- •Файл класса(1/3)
- •Файл класса(2/3)
- •Файл класса(3/3)
- •Пример: Структура поля
- •Атрибуты
- •Атрибут Code
- •Ограничения
- •Пример class-файла(1/2)
- •Пример class-файла(2/2)
- •Литература

JAVA-ТЕХНОЛОГИЯ
Сафонов Владимир Олегович
Профессор кафедры информатики, руководитель лаборатории Java- технологии (http://polyhimnie.math.spbu.ru/jtl)
Email: vosafonov@gmail.com
Лекция 24
Виртуальная машина Java (JVM). Класс-файлы. HotSpot

Виртуальная машина
Программная система, позволяющая без изменения запускать код для одной программно-аппаратной платформы на другой несовместимой программно- аппаратной платформе
Примеры: VMWare, VirtualBox, Microsoft Virtual PC
(С)Сафонов В.О. 2013
Достоинства
Переносимость.
Возможность проверки безопасности кода перед загрузкой.
Упрощенная отладка.
Возможность динамической оптимизации кода.
(С) Сафонов В.О. 2013
Недостатки
Виртуальной машине требуются дополнительные ресурсы.
Сложность доступа к низкоуровневым особенностям платформы.
(С) Сафонов В.О. 2013

Виртуальная машина Java
(С) Сафонов В.О. 2013

Архитектура Java VM
Типы данных.
Регистры.
Куча.
Пул констант.
Фрейм.
Локальные переменные.
Стеки.
Инструкции.
(С)Сафонов В.О. 2013

Типы данных
Примитивные типы: поддержка типов byte, short, int, long, char, float, double.
Поддержка вещественных типов с расширенной плавающей
точкой (не меньше 11 бит для float и не меньше 15 бит для double).
Специальный тип returnAddress (при реализации finally- блоков).
Тип boolean представлен как int, массив boolean – как массив byte.
Ссылочные типы: занимают 4 байта, поддержка типов class, interface, array.
Имеется специальное значение ссылочных типов – null.
(С)Сафонов В.О. 2013

Регистр PC (счетчик
команд)
Имеет свое значение для каждого потока (thread)
Указывает на текущую выполняемую виртуальную команду
(С) Сафонов В.О. 2013

Куча
Создается при запуске JVM.
Размер может быть статическим или динамическим (OutOfMemoryError).
Память из кучи выделяется под экземпляры классов.
Для очистки памяти используется сборщик мусора.
(С)Сафонов В.О. 2013
Область методов (1/2)
Является частью кучи.
Предназначена для хранения данных классов и интерфейсов.
Сборки мусора не происходит.
(С) Сафонов В.О. 2013