Курс: JVA-076 new
Длительность: 30 ч.
Длительность: 30 ч.
Описание
Курс посвящен повышению производительности Java-приложений. В нем рассматриваются различные подходы к профилированию, поиску узких мест, тюнингу виртуальной машины, настройки флагов JVM, библиотеки сериализации и кэширования, хранение данных вне кучи, бенчмаркинг, мониторинг и настройка памяти и другие темы.Разбираемые темы
Модуль 1. Обзор тюнинга производительности [3 ч]- Общие практики;
- Стратегии тюнинга производительности;
- Метрики производительности;
- Как повысить производительность?
Модуль 2. Алгоритмы GC. [3 ч]
- Сборщик мусора G1;
- ZGC / Shenandoah;
- Замораживание безопасной точки (safepoint);
- Клиентский и серверный режим;
- Флаги GC JVM;
- Флаги логгирования GC.
Модуль 3. JIT-компилятор HotSpot [2 ч]
- JIT и AOT компиляция;
- Слои компиляции;
- Оптимизация кода;
- Настройка компилятора;
- Флаги компилятора JVM.
Модуль 4. Флаги JVM [2 ч]
- Назначение и категории флагов JVM;
- Общие флаги;
- Флаги, связанные со строками;
- Флаги управления памятью;
- План тюнинга JVM.
Модуль 5. Профилирование Java [4 ч]
- Когда и как делать профилирование?;
- Профилирование с помощью AOP;
- Использование JProfiler;
- Использование Java VisualVM;
- Инструментирование и сэмплирование;
- Java Flight Recorder;
- Пользовательское профилирование.
Модуль 6. Тестирование производительности алгоритмов (benchmarking) с помощью JMH [3 ч]
- Что такое benchmarking;
- Знакомство с JMH;
- API JMH;
- Нетривиальные примеры;
- Применение JMH на практике.
Модуль 7. Кэширование Java [2 ч]
- Шаблоны кеширования;
- Локальное и распределенное кеширование;
- Сравнение API кешей;
- Тесты кеширования.
Модуль 8. Мониторинг и настройка памяти [2 ч]
- Инструменты анализа памяти;
- Чрезмерный анализ ГХ;
- Анализ утечек памяти.
Модуль 9. Структуры данных, эффективно использующие память [2 ч]
- Коллекции вне кучи (off-heap collections);
- MapDB;
- Chronicle Map;
- Буферы прямой записи NIO (direct buffers);
- Файлы с отображением в память NIO (memory mapped files);
- Netty ByteBuf.
Модуль 10. Сериализация [2 ч]
- Сериализаторы JSON (GSON, Jackson);
- Двоичные сериализаторы (Protobuf, Jackson Smile, Kryo, FST, One NIO).
Модуль 11. GraalVM [2 ч]
- Экосистема GraalVM;
- Среда выполнения GraalVM;
- Polyglot API;
- Компиляция и родной образ;
- Контрольные показатели.
Модуль 12. Обзор других подходов к повышению производительности [3 ч]
- Параллельное программирование (пулы потоков, параллельные потоки, структура fork-join);
- Реактивное программирование (Reactor, VertX);
- Облачные вычисления (микросервисы, обмен сообщениями, Apache Spark, AWS Lambda, Google Cloud Functions);
- Контрольные показатели и выводы.
Цели
После прохождения курса слушатели:
- разберутся во внутреннем устройстве виртуальной машины Java, работе JIT и AOT компилятора, различных реализациях сборщика мусора и механизмах распределении памяти, научатся оптимизировать их работу,
- смогут находить узкие места в программах и устранять их,
- научатся выбирать самые эффективные алгоритмы из нескольких вариантов,
- познакомятся с реализациями низкоуровневых коллекций, различными библиотеками кэширования и сериализации, узнают, какие из этих библиотек наиболее производительны,
- узнают, как настраивать виртуальную машину, чтобы она работала наиболее эффективно для конкретных задач.
Курс содержит всеохватную информацию о том, как сделать программы на Java высокопроизводительными и эффективными.
Целевая аудитория
Разработчики Java, архитекторы Java.Предварительная подготовка
Уверенное владение Java
После окончания курса выдаётся сертификат на бланке Luxoft Training