Курс: Java Advanced II: высокопроизводительная Java

Курс: Java Advanced II: высокопроизводительная Java

Курс: Java Advanced II: высокопроизводительная Java


Продолжительность курса: 40 ак. ч.

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

Аудитория:
• Java-разработчики.
• Архитекторы Java

Необходимая подготовка:
Уверенное владение Java.

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

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

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

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

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

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

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

Модуль 8. Профилирование Java
• Когда и как делать профилирование?
• Сэмплирующие и инструментирующие профайлеры;
• Использование 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. Мониторинг и анализ данных кучи. Утечки памяти
• Инструменты для анализа динамической памяти;
• Признаки утечек памяти;
• Основные причины утечек памяти;
• Поиск и обнаружение утечек памяти;
• Слабые и фантомные ссылки;
• Инструменты IDEA для анализа дампов кучи;
• Асинхронный профайлер для анализа потребления памяти;
• Использование числа генераций профайлера VisualVM для обнаружения утечек памяти;
• Использование MissionControl/JFR для автоматического анализа утечек памяти;
• Анализатор памяти Eclipse – анализ знаменателей и кучи.

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

Окончательная цена указывается в договоре на обучение.

Характеристики курса

  • Начало: Ведется набор
  • Вендор: Java
  • Код курса: JV-37
  • Город: Екатеринбург, Пермь, Москва,
  • Направление: Курсы для IT-специалистов
  • Академических часов: 40
  • Количество мест: 8
  • Очно: 123900 ₽
  • Дистанционно: 123900 ₽
Записаться на курс

Курсы повышения квалификации
и профессиональной переподготовки


График работы:
Мы отвечаем на звонки и письма в будние дни с 7:00 до 16:00 по Мск

8 800 (600)-66-16

Владелец сайта:
АНО ДПО «Учебный центр «ШИФТ»
ИНН 5904355180
ОГРН 1175958039586
Юридический адрес: 614010, г. Пермь, ул. Клары Цеткин, д. 14, офис 32.
E-mail: info@eshift.ru