О чём курс

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

Цели

Познакомить слушателей с современными подходами к повышению производительности Java приложений.

Целевая аудитория

Разработчики Java, архитекторы Java.

Предварительная подготовка

Уверенное владение Java.

Для кого

Разработчик Разработчик

Улучшаемые навыки

Оптимизация производительности приложений
Параллелизм и многопоточность
Использование оптимизированных коллекций и структур данных
Тестирование производительности и нагрузочное тестирование

Темы курса

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

02 Алгоритмы GC (теория - 6 ч.)
  • Использование памяти Java-объектами;
  • Общие подходы и алгоритмы сборщиков мусора;
  • Сборщик мусора Serial GC;
  • Сборщик мусора Parallel GC;
  • Сборщик мусора CMS;
  • Сборщик мусора G1;
  • Сборщик мусора Shenandoah;
  • Тюнинг сборщиков мусора;
  • Инструменты сбора и анализа метрик о сборке мусора;
  • Выбор оптимального сборщика мусора.
03 JIT-компилятор HotSpot (практика - 3 ч. + теория - 2 ч.)
  • JIT компиляция;
  • Java байт-код;
  • Многослойная компиляция;
  • Кэш кода и его тюнинг;
  • Оптимизация кода;
  • Деоптимизация кода и когда она происходит;
  • Инструмент JITWatch для анализа результатов компиляции;
  • Виды оптимизаций;
  • Спекулятивные оптимизации;
  • Настройка компилятора;
  • AOT компиляция;
  • GraalVM.

04 Флаги JVM (теория - 3 ч.)
  • Назначение и категории флагов JVM;
  • Общие флаги;
  • Флаги, связанные со строками;
  • Флаги управления памятью;
  • Safepoints и флаги, связанные с ними;
  • TLAB и флаги, связанные с ними;
  • План тюнинга JVM.
05 Тестирование производительности алгоритмов (benchmarking) с помощью JMH (практика - 2 ч.)
  • Что такое benchmarking;
  • Знакомство с JMH;
  • API JMH;
  • Нетривиальные примеры;
  • Применение JMH на практике.
  • Домашняя работа (2 ч).
06 Использование памяти вне кучи (off-heap memory) и эффективные структуры данных (теория - 2 ч. + практика 2 ч.)
  • Что такое sun.misc.Unsafe;
  • Методы Unsafe;
  • Производительность нативной памяти;
  • Создание структур данных в нативной памяти;
  • Оценка производительности нативной памяти и сравнение с памятью в куче;
  • Примитивные коллекции;
  • Денормализация данных;
  • Перспективный Foreign Memory Access API.

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

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

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

69 900 ₽

62 910 ₽ — для физ. лиц

Записаться на курс

Чему вы научитесь

01 Научитесь анализировать производительность Java-приложений с использованием инструментов профилирования
02 Научитесь создавать высокопроизводительные многопоточные приложения
03 Освоите выбор и использование оптимизированных коллекций и структур данных в Java
04 Научитесь применять методы тестирования производительности и нагрузочного тестирования с использованием инструментов

Ведущий курса

Михаил

Соколов Михаил

Эксперт в области разработки и архитектуры ПО

69 900 ₽

62 910 ₽ — для физ. лиц

Записаться на курс

Записаться на курс

69 900 ₽

62 910 ₽ — для физ. лиц

Юр. лицо — 69 900 ₽
Физ. лицо — 62 910 ₽
03.03.2025, Онлайн
03.03.2025, Онлайн
Открытая дата
Продолжая, я подтверждаю, что ознакомлен с Условиями использования и Порядком обработки персональных данных

Отзывы о курсе

Повысьте квалификацию И получите диплом
Отзывы учеников
Хорошие впечатления. Дан большой объем знаний. Повторение пройденного материала на занятиях полезно. Самое полезное для меня: сравнение GC и советы по настройке JDK. Единственное, хотелось бы добавить дополнительные сравнительные тесты между JIT (C2) и Graal. А так все замечательно!
Теоретические материалы – отличные. Понравилась демонстрация того, как нужно использовать инструменты для сравнительного анализа, интересные факты о внутренностях jvm и обзор полезных инструментов. Этот тренинг помог мне лучше понять, что нужно делать для устранения проблем с производительностью.
Тренинг оказался для меня крайне интересным. Все части курса были очень информативны и полезны с точки зрения их дальнейшего использования в профессиональной деятельности.

Связанные курсы

JVA-074
36 часов

Java Advanced I: функциональное, асинхронное и реактивное программирование

Курс посвящен современным функциональным, асинхронным и реактивным подходам к разработке на Java, и включает изучение NIO2, CompletableFuture, RxJava, Reactor, R2DBC, SSE, Spring Data reactive, WebClient, reactive WebSocket, RSocket.

от Senior

63 900 ₽

Наши ученики работают в:

Наши клиенты

Mail.ru
Альфа-Банк, банковская группа
Лаборатория Касперского
Магнит, розничная сеть
Спортмастер, сеть спортивных магазинов
ПСБ
Сбертех
Дзен
IT One
Ростелеком
Мегафон
Nexign
Ozon
Декатлон
X5 Group
Технониколь
Росатом
Газпром
Нлмк
ВСК
Синимекс

Не нашли, что искали? — Просто напишите, и мы поможем

Продолжая, я подтверждаю, что ознакомлен с Условиями использования и Порядком обработки персональных данных
Корпоративное обучение Оценка персонала Сертификация О нас Стань тренером Блог
Пользователь только что записался на курс ""
Спасибо!
Форма отправлена успешно.