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

Презентация:



Advertisements
Похожие презентации
Разработка сред управляемого исполнения на примере виртуальной машины Java Занятие 2 Салищев С.И.
Advertisements

Программная инженерия Дмитриев Андрей Владиславович
Вперёд ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЦЕЛИ: ЦЕЛИ: 1. Средство для задания действий, которые должны быть выполнены машиной.(Машинный язык) 1. Средство для задания.
Платформа Java SE: введение Андрей Дмитриев
Основы ООП и C# Работа с объектами и классами. Классы Класс специальный тип данных для описания объектов. Он определяет данные и поведение типа. Определение.
Компьютерные технологии в метеорологии (Java-технологии) Чукин В. В.
Особенности C# Индексаторы, события, частичные методы, расширяющие методы, сборщик мусора DraggonZ.
Платформа Java. Компиляция Динамическая компиляция Just-in-time (оперативная) компиляция Динамическая компиляция HotSpot Непрерывная перекомпиляция.
Объектно-ориентированное программирование Карпов В.Э. Смолток. Лекция 4. Байт-код.
Подготовили студенты ЭиП-554: Климентьев Д.А. Улитин А.Д.
Язык программирования Java Дмитриев Андрей Владиславович 2007.
Программная инженерия Дмитриев Андрей Владиславович
Обзор технологии Java Card. Что такое смарт - карта Карта снабженная микропроцессором, памятью, устройствами приема и передачи информации; Взаимодействие.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Практическое занятие 6. Функции. Большинство языков программирования используют понятия функции и процедуры. C++ формально не поддерживает понятие процедуры,
1 Платформа Java – обзор и перспективы развития Александр Зуев Sun Misrosystems 1.
Верификация байт- кода в среде смарт- карт: использование криптографических методов К. Н. Хюппенен Кафедра информатики и математического обеспечения ПетрГУ.
Основы современных операционных систем Лекция 7. (C) В.О. Сафонов,
Работа с программами на языке JAVA. JAVA объектно-ориентированный язык программирования, разрабатываемый компанией Sun Microsystems. Приложения Java обычно.
Существует три разновидности комментариев: комментарии в одной строке, комментарии в нескольких строках, комментарии для документирования. Комментарии,
Транксрипт:

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

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

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

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

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

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

7 Поддерживаемые типы данных byte 1-байтовое со знаком, представленное в дополнительном обратном коде short 2-байтовое со знаком, представленное в дополнительном обратном коде int 4-байтовое со знаком, представленное в дополнительном обратном коде long 8-байтовое со знаком, представленное в дополнительном обратном коде float вещественное число одинарной точности стандарта IEEE 754, занимающее 4 байта double вещественное число двойной точности стандарта IEEE 754, занимающее 8 байт charсимвол Unicode, занимающий 2 байта objectссылка на объект, занимающая 4 байта returnAddress4 байта, используемые с инструкциями jsr/ret/jsr_w/ret_w Реализация логического типа неспецифицирована

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

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

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

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

12 Структура класс-файла 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]; }

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

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

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

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

17 Ссылки The Java TM Virtual Machine Specification, Second Edition – Устройство JVM TI (Tool Interface): – _ti/index.html

Q&A

Спасибо! Андрей Дмитриев 2008 Виртуальная машина Java