Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java1_2013_2014 / java24.pptx
Скачиваний:
133
Добавлен:
16.04.2015
Размер:
223.47 Кб
Скачать

Инструкции(4/4)

Ещё пример:

void whileInt() { int i = 0;

while (i < 100) { i++;

}

}

Method void whileInt()

 

0 iconst_0

 

1 istore_1

 

2 goto 8

 

5 iinc 1 1

 

8 iload_1

 

9 bipush 100

 

11 if_icmplt 5

 

14 return

(С) Сафонов В.О. 2013

Java HotSpot

(С) Сафонов В.О. 2013

Особенности

Существует две модификации – для клиентских и для серверных машин.

У каждой модификации свой компилятор.

Поддержка операций с 64-битовыми данными.

Упаковка объектов.

Все классы находятся в куче (и могут быть удалены).

Простые и native-методы используют один и тот же стек.

Продвинутая сборка мусора(с возможностью выбора алгоритма).

(С)Сафонов В.О. 2013

JIT и HotSpot(1/2)

JIT – динамический компилятор, компилирует байт-код в код целевой платформы.

HotSpot анализирует код на частоту выполнения и использует JIT для компиляции «горячих точек» (20% кода – 80% времени).

HotSpot может производить подстановку методов (inlining).

Возможность деоптимизации и реоптимизации кода.

(С) Сафонов В.О. 2013

JIT и HotSpot(2/2)

(С) Сафонов В.О. 2013

Мониторинг

Jconsole – простейшая программа для мониторинга Java приложений.

jsp и jstat – утилиты для мониторинга java- приложений

Набор пакетов javax.management и java.lang.management

Средства мониторинга в среде Solaris.

(С) Сафонов В.О. 2013

Class-файлы

(С) Сафонов В.О. 2013

Файл класса(1/3)

Представлен в виде потока байтов.

Все многобайтовые величины представлены в виде последовательности байтов (старшие байты – первые).

uN – это представление элемента из N байтов. (u1, u2,…).

Поддерживается интерфейсами java.io.DataInput, java.io.DataOutput и классами java.io.DataInputStream и java.io.DataOutputStream.

(С)Сафонов В.О. 2013

Файл класса(2/3)

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[attributes_count];

// атрибутах

}

(С) Сафонов В.О. 2013

Файл класса(3/3)

Числа major_version и minor_version вместе образуют номер версии файла

this_class, super_class а также interfaces[ ] указывают на некоторые элементы пула констант.

Каждый файл содержит таблицу только своих полей и методов.

Поля описываются с помощью специальных символов(I –

для int, D – для double, и т.д.). double d[][][] - это

[[[D (описываются в специальных элементах пула констант: CONSTANT_Utf8_info).

Методы описываются параметрами и возвращаемым значением

Object mymethod(int i, double d, Thread t)

-> (IDLjava/lang/Thread;)Ljava/lang/Object;

Каждый элемент пула констант имеет первым байтом

некоторое значение, определяющее его тип.

(С)Сафонов В.О. 2013

Соседние файлы в папке java1_2013_2014