Luxoft training Java Advanced II: высокопроизводительная Java
Курс посвящен повышению производительности Java-приложений: выявлению узких мест, подходам и практикам к повышению производительности, а также инструментам и библиотекам, позволяющим добиться высокой производительности.
Автор: Сонькин Владимир - Эксперт в области разработки ПО: Java и Web-технологии
Разбираемые темы
Модуль 1. Обзор тюнинга производительности – 5 ч.
Модуль 2. Алгоритмы GC – 5 ч.
Модуль 4. Флаги JVM – 3 ч.
Модуль 6. Использование памяти вне кучи (off-heap memory) – 3 ч.
Модуль 9. Мониторинг и анализ данных кучи. Утечки памяти – 2 ч.
Курс посвящен повышению производительности Java-приложений: выявлению узких мест, подходам и практикам к повышению производительности, а также инструментам и библиотекам, позволяющим добиться высокой производительности.
Автор: Сонькин Владимир - Эксперт в области разработки ПО: Java и Web-технологии
Разбираемые темы
Модуль 1. Обзор тюнинга производительности – 5 ч.
- Общие практики;
- Стратегии тюнинга производительности;
- Метрики производительности;
- Как повысить производительность?
- Инструменты для измерения производительности;
- JMeter;
- Нагрузочное тестирование с помощью JMeter;
- Как повысить производительность с помощью архитектуры?
- Лучшие практики для улучшения производительности кода.
Модуль 2. Алгоритмы GC – 5 ч.
- Использование памяти Java-объектами;
- Общие подходы и алгоритмы сборщиков мусора;
- Сборщик мусора Serial GC;
- Сборщик мусора Parallel GC;
- Сборщик мусора CMS;
- Сборщик мусора G1;
- Сборщик мусора Shenandoah;
- Тюнинг сборщиков мусора;
- Инструменты сбора и анализа метрик о сборке мусора;
- Выбор оптимального сборщика мусора.
- JIT компиляция;
- Java байт-код;
- Многослойная компиляция;
- Кэш кода и его тюнинг;
- Оптимизация кода;
- Деоптимизация кода и когда она происходит;
- Инструмент JITWatch для анализа результатов компиляции;
- Виды оптимизаций;
- Спекулятивные оптимизации;
- Настройка компилятора;
- AOT компиляция.
Модуль 4. Флаги JVM – 3 ч.
- Назначение и категории флагов JVM;
- Общие флаги;
- Флаги, связанные со строками;
- Флаги управления памятью;
- Safepoints и флаги, связанные с ними;
- TLAB и флаги, связанные с ними;
- План тюнинга JVM.
- Что такое benchmarking;
- Знакомство с JMH;
- API JMH;
- Нетривиальные примеры;
- Применение JMH на практике.
Модуль 6. Использование памяти вне кучи (off-heap memory) – 3 ч.
- Что такое sun.misc.Unsafe;
- Методы Unsafe;
- Производительность нативной памяти;
- Создание структур данных в нативной памяти;
- Оценка производительности нативной памяти и сравнение с памятью в куче;
- Перспективный Foreign Memory Access API.
- Сериализаторы JSON (GSON, Jackson);
- Двоичные сериализаторы (Protobuf, Jackson Smile, Kryo, FST, One NIO);
- Сравнение производительности различных сериализаторов.
- Когда и как делать профилирование?
- Сэмплирующие и инструментирующие профайлеры;
- Использование 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.
Модуль 9. Мониторинг и анализ данных кучи. Утечки памяти – 2 ч.
- Инструменты для анализа данных в памяти;
- Признаки утечек памяти;
- Основные причины утечек памяти;
- Поиск и обнаружение утечек памяти.
- Экосистема GraalVM;
- Среда выполнения GraalVM;
- Polyglot API;
- Компиляция и родной образ;
- Контрольные показатели.
- Шаблоны кеширования;
- Сравнение API кешей;
- Кеширование запросов БД;
- Кеширование HTTP запросов;
- Основные метрики и настройки библиотек кеширования;
- Сравнение популярных библиотек кеширования;
- Кеширование сервисного уровня;
- Кеширование Spring сервисов;
- Приложения, использующие кеши разных уровней.
- Параллельное программирование (пулы потоков, параллельные потоки, структура fork-join);
- Асинхронное программирование;
- Реактивное программирование (Reactor, VertX);
- Оптимизация работы с базами данных;
- Облачные вычисления (микросервисы, Spring Cloud);
- Контрольные показатели и выводы.
https://www.luxoft-training.ru/kurs/java_advanced_ii_vysokoproizvoditelnaya_java.html