Скачать Java Advanced II: высокопроизводительная Java [IBS]

Sky90

VIP складчик
Platinum
Премиум
Администратор
Регистрация
1 Дек 2015
Сообщения
146.078
Реакции
777.031
Java Advanced II: высокопроизводительная Java [IBS]




Курс посвящен повышению производительности Java-приложений. В курсе рассматриваются различные подходы к профилированию, поиску узких мест, тюнингу виртуальной машины, настройки флагов JVM, библиотеки сериализации и кэширования, хранение данных вне кучи, бенчмаркинг, мониторинг и настройка памяти, и другие темы.


Спойлер: Разбираемые темы

Модуль 1. Обзор тюнинга производительности (теория - 3 ч. + практика - 3 ч.)
Общие практики;
Стратегии тюнинга производительности;
Метрики производительности;
Как повысить производительность?
Инструменты для измерения производительности;
JMeter;
Нагрузочное тестирование с помощью JMeter;
Как повысить производительность с помощью архитектуры?
Повышение производительности с помощью архитектуры: потоки, очереди, микросервисы, облака;
Лучшие практики для улучшения производительности кода.


Модуль 2. Алгоритмы GC (теория - 6 ч.)
Использование памяти Java-объектами;
Общие подходы и алгоритмы сборщиков мусора;
Сборщик мусора Serial GC;
Сборщик мусора Parallel GC;
Сборщик мусора CMS;
Сборщик мусора G1;
Сборщик мусора Shenandoah;
Тюнинг сборщиков мусора;
Инструменты сбора и анализа метрик о сборке мусора;
Выбор оптимального сборщика мусора.

Модуль 3. JIT-компилятор HotSpot (практика - 3 ч. + теория - 2 ч.)
JIT компиляция;
Java байт-код;
Многослойная компиляция;
Кэш кода и его тюнинг;
Оптимизация кода;
Деоптимизация кода и когда она происходит;
Инструмент JITWatch для анализа результатов компиляции;
Виды оптимизаций;
Спекулятивные оптимизации;
Настройка компилятора;
AOT компиляция;
GraalVM.


Модуль 4. Флаги JVM (теория - 3 ч.)
Назначение и категории флагов JVM;
Общие флаги;
Флаги, связанные со строками;
Флаги управления памятью;
Safepoints и флаги, связанные с ними;
TLAB и флаги, связанные с ними;
План тюнинга JVM.

Модуль 5. Тестирование производительности алгоритмов (benchmarking) с помощью JMH (практика - 2 ч.)
Что такое benchmarking;
Знакомство с JMH;
API JMH;
Нетривиальные примеры;
Применение JMH на практике.
Домашняя работа (2 ч).

Модуль 6. Использование памяти вне кучи (off-heap memory) и эффективные структуры данных (теория - 2 ч. + практика 2 ч.)
Что такое sun.misc.Unsafe;
Методы Unsafe;
Производительность нативной памяти;
Создание структур данных в нативной памяти;
Оценка производительности нативной памяти и сравнение с памятью в куче;
Примитивные коллекции;
Денормализация данных;
Перспективный Foreign Memory Access API.


Модуль 7. Сериализация и сетевая структура (теория - 3 ч.)
Сериализаторы JSON (GSON, Jackson);
Двоичные сериализаторы (Protobuf, Jackson Smile, Kryo, FST, One NIO);
Сравнение производительности различных сериализаторов;
Производительность сети при подключении через различные протоколы: HTTP/REST, TCP, Async TCP, RSocket, Netty server/client.

Модуль 8. Профилирование Java (теория - 3 ч. + практика - 2 ч.)
Когда и как делать профилирование?
Сэмплирующие и инструментирующие профайлеры;
Использование Java VisualVM для профилирования;
Профилирование с помощью Spring AOP;
Профилирование с помощью IDEA и async profiler;
Java Flight Recorder;
Анализ логов Java Flight Recorder с помощью Mission Conrol;
Создание и логгирование кастомных событий JFR ;
Использование Java агентов для внедрения в код и записи любых событий в Java Flight Recorder;
Написание программ для автоматического анализа логов JFR;
Сбор и анализ SQL запросов с помощью JFR;
Сбор и анализ REST запросов с помощью JFR;
Средства управления производительностью приложений;
Использование Glowroot для профилирования и анализа SQL-запросов и REST-запросов.


Модуль 9. Мониторинг и анализ данных кучи. Утечки памяти (теория - 3 ч.)
Инструменты для анализа динамической памяти;
Признаки утечек памяти;
Основные причины утечек памяти;
Поиск и обнаружение утечек памяти;
Слабые и фантомные ссылки;
Инструменты IDEA для анализа дампов кучи;
Асинхронный профайлер для анализа потребления памяти;
Использование числа генераций профайлера VisualVM для обнаружения утечек памяти;
Использование MissionControl/JFR для автоматического анализа утечек памяти;
Анализатор памяти Eclipse – анализ знаменателей и кучи.


Модуль 10. Кэширование в приложениях Java (теория - 3 ч.)
Шаблоны кеширования;
Кеширование HTTP запросов;
Конфигурация библиотек кеширования;
Популярные библиотеки кэширования: EhCache, Caffeine;
Кеширование сервисного уровня;
Кеширование Spring сервисов;
Буферизация ввода/вывода;
Кэш процессора и непрерывная область памяти;
Кэширование JPA/Hibernate;
Приложения, использующие кэши разных уровней.






Предыдущая часть: Часть 1



 
Сверху