Виртуальная машина и MRE. Достоинства и недостатки MRE по сравнению с естественным кодом платформы
Основные компоненты MRE и их назначение.
Внешний интерфейс Java (JNI).
Внешний интерфейс CLI.
Процесс верификации класса Java.
Интерпретация. Шаблонная JIT компиляция. Оптимизирующая JIT и AOT компиляция.
Организация памяти современного процессора (L1, L2, L3 Cache, TLB, Virtual memory)
Представление в памяти объекта и класса. Хеш код объекта, 2 битная упаковка, однобитная упаковка слова состояния монитора
Реализация вызовов через интерфейс.
Реализация стека вызовов, реализация локальных данных нити.
Назначение планировщика и связь с синхронизацией.
Каузальная модель памяти Java
Атомарные операции. Толстые и тонкие мониторы.
Резервация мониторов.
Метрики скорости системы управления памятью. Способы выделения памяти.
Трехцветная раскраска, трехцветный инвариант, варианты реализации.
Подсчет ссылок. Двухпальцевый алгоритм.
Поколения объектов. Реализация.
Parallel Mark/Sweep. Concurrent Mark/Sweep (IBM
JDK)
Break Table, Mark/Compact, Mark/Sweep/Compact.
Полупространственный копирующий алгоритм.
Сборка младших поколений в Oracle
JDK CMS.
Характеристики алгоритма Sapphire.
Характеристики алгоритма Train.
Характеристики алгоритма G1.
Оптимизирующий JIT Компилятор. Особенности MRE.
Структура оптимизирующего компилятора.
Промежуточное представление и оптимизации высокого и низкого уровня.
Модель динамической перекомпиляции. Особенности JIT компилятора. Замена кода.
Динамическое профилирование.
Системы реального времени. Метрики систем реального времени. Проблемы реализации MRE реального времени.
Свойства JSR1. Типы памяти. Типы нитей. Особенности компиляции.
Характеристики алгоритма Metronome.
Транзакционная паямять
Протокол MESI
Intel Transactional Synchronization Extensions
Нарушение локальности и способы его исправления. Проблемы взаимодействия с
OS и направления интеграции.
Характеристики стандартных тестовых нагрузок.