Виртуальная машина Java Андрей Дмитриев [email protected] 2008.

Содержание

Слайд 2

За счет чего Java программы переносимы?

Дополнительный уровень, определяющий интерфейс к аппаратным ресурсам

За счет чего Java программы переносимы? Дополнительный уровень, определяющий интерфейс к аппаратным ресурсам

Слайд 3

Программа

Что такое виртуальная машина?
Устройство и состав

Программа Что такое виртуальная машина? Устройство и состав

Слайд 4

Java Virtual Machine

JVM - основная часть исполняющей системы Java, называемой Java Runtime

Java Virtual Machine JVM - основная часть исполняющей системы Java, называемой Java Runtime Environment
Environment

Слайд 5

Основы

Устройство JVM специфицировано в 1996 году
JVM интерпретирует и исполняет байт-код Java
Байт-код может

Основы Устройство JVM специфицировано в 1996 году JVM интерпретирует и исполняет байт-код
исполняться на любой JVM подходящей версии
Для каждой аппаратной платформы используется своя JVM

Слайд 6

Состав JVM

java – интерпретатор байт-кода
Куча (heap) – нераспределенная область динамической памяти предназначенная

Состав JVM java – интерпретатор байт-кода Куча (heap) – нераспределенная область динамической
для размещения объектов
Сборщик мусора (Garbage Collector, GC) – постоянно действующий код, освобождающий неиспользуемые куски памяти
Стек – структура данных, используемая для передачи параметров при вызове подпрограмм

Слайд 7

Поддерживаемые типы данных

Поддерживаемые типы данных

Слайд 8

Управление памятью - сборка мусора

Часто противопоставляется ручному управлению памятью
Упрощает процесс программирования
Предотвращает утечки

Управление памятью - сборка мусора Часто противопоставляется ручному управлению памятью Упрощает процесс
памяти
Но утечки могут происходить при невнимательном программировании
Позволяет оптимизировать размещение объектов
Система с реализованной сборкой мусора как правило менее производительна и более требовательна к ресурсам

Слайд 9

Сборщик мусора JVM

Определяет объекты, которые в будущем не будут использоваться
Освобождает память, занятую

Сборщик мусора JVM Определяет объекты, которые в будущем не будут использоваться Освобождает
такими объектами
Все время находится в рабочем состоянии
Не предполагается никакого конкретного алгоритма работы
Влиять на работу сборщика мусора можно лишь косвенно:
Рекомендуя выполнять те или иные действия
Изменяя параметры запуска

Слайд 10

Виды сборки мусора

Отслеживающий метод – обход графа и определение достижимости объекта
Использование поколений:
При

Виды сборки мусора Отслеживающий метод – обход графа и определение достижимости объекта
срабатывании сборщика мусора к значению неудаленного объекта прибавляется единица – сколько сборок мусора он пережил
Объекты с одинаковыми такими значениями образуют поколение
Сборщик мусора с большей вероятностью удаляет экземпляры только некоторых поколений

Слайд 11

Ограничения

На один класс в константном пуле отводится максимум 65535 элементов
Длина кода

Ограничения На один класс в константном пуле отводится максимум 65535 элементов Длина
метода ограничена 65535 байтами
Число слов аргументов в вызове метода ограничено 255

Слайд 12

Структура класс-файла
ClassFile {    u4 magic;     u2 minor_version; u2 major_version; u2 constant_pool_count; cp_info

Структура класс-файла ClassFile { u4 magic; u2 minor_version; u2 major_version; u2 constant_pool_count;
constant_pool[constant_pool_count - 1]; u2 access_flags;
u2 this_class;
u2 super_class;
u2 interfaces_count; u2 interfaces[interfaces_count]; u2 fields_count;
field_info fields[fields_count]; u2 methods_count; method_info
methods[methods_count]; u2 attributes_count; attribute_info attributes[attribute_count]; }

Слайд 13

Исполнение программы Java

При запуске приложения (класса) виртуальная машина выполняет следующие действия:
Загрузка класса

Исполнение программы Java При запуске приложения (класса) виртуальная машина выполняет следующие действия:
по его идентификатору загрузчиком классов (ClassLoader)
Верификация - проверка того, что структура класса верна (инструкции имеют корректные коды, методы имеют сигнатуры)
Подготовка - присваивание значений по умолчанию статическим полям класса
Разрешение - все ссылки проверяются (заменяются на прямые ссылки)
Инициализация - выполнение статического инициализирующего блока и присваивание значений статическим полям

Слайд 14

Выгрузка класса

Класс может быть выгружен, если его загрузчик стал недоступен
Системные классы не

Выгрузка класса Класс может быть выгружен, если его загрузчик стал недоступен Системные
могут быть выгружены ввиду того, что загрузчик системных классов доступен всегда во время работы JVM

Слайд 15

Прерывание работы JVM

JVM прекращает свою работу, если выполнено одно из условий:
Все потоки,

Прерывание работы JVM JVM прекращает свою работу, если выполнено одно из условий:
не являющиеся демонами, завершены
Один из потоков вызвал метод exit() и данная операция была разрешена менеджером безопасности

Слайд 16

Правда ли что…

Формат класс-файла четко формализован?
Размер кучи можно изменять во время работы

Правда ли что… Формат класс-файла четко формализован? Размер кучи можно изменять во
JVM?
При недостатке длины стека он автоматически увеличивается до необходимого размера?
Сборщик мусора может удалить любой объект в памяти компьютера?

Слайд 17

Ссылки

The JavaTM Virtual Machine Specification, Second Edition
http://java.sun.com/docs/books/jvms/
Устройство JVM TI (Tool Interface):

Ссылки The JavaTM Virtual Machine Specification, Second Edition http://java.sun.com/docs/books/jvms/ Устройство JVM TI (Tool Interface): http://java.sun.com/developer/technicalArticles/J2SE/jvm_ti/index.html

http://java.sun.com/developer/technicalArticles/J2SE/jvm_ti/index.html
Имя файла: Виртуальная-машина-Java-Андрей-Дмитриев[email protected]
Количество просмотров: 128
Количество скачиваний: 0