'

Виртуальная машина Java Андрей Дмитриев andrei-dmitriev@yandex.ru 2008.

Понравилась презентация – покажи это...





Слайд 0

Виртуальная машина Java Андрей Дмитриев andrei-dmitriev@yandex.ru 2008


Слайд 1

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


Слайд 2

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


Слайд 3

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


Слайд 4

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


Слайд 5

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


Слайд 6

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


Слайд 7

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


Слайд 8

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


Слайд 9

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


Слайд 10

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


Слайд 11

Структура класс-файла ClassFile {    u4 magic;        u2 minor_version;    u2 major_version;    u2 constant_pool_count;    cp_info 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]; }


Слайд 12

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


Слайд 13

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


Слайд 14

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


Слайд 15

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


Слайд 16

Ссылки 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


Слайд 17

Q&A


Слайд 18

Спасибо! Андрей Дмитриев andrei-dmitriev@yandex.ru 2008 Виртуальная машина Java


×

HTML:





Ссылка: