Java Advanced II: высокопроизводительная Java
Курс посвящен повышению производительности Java-приложений: выявлению узких мест, подходам и методам для повышению производительности, а также инструментам и библиотекам, позволяющим добиться высокой производительности.
40 ак.ч.
Онлайн
JVA-076
Java Advanced II: высокопроизводительная Java
Записаться на курс
Длительность
40 ак.ч.
Локация
Онлайн
Код
JVA-076
Расписание и цены
17.10.2022 - 28.10.2022
65 400 руб.
Планируете обучить команду из 7-8 или более человек?
Закажите корпоративное обучение с учетом ваших потребностей
Java Advanced II: высокопроизводительная Java
Записаться на курс
Длительность
40 ак.ч.
Локация
Онлайн
Код
JVA-076
Расписание и цены
17.10.2022 - 28.10.2022
65 400 руб.
Планируете обучить команду из 7-8 или более человек?
Закажите корпоративное обучение с учетом ваших потребностей

Описание

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

Цели

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

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

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

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

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

Разбираемые темы

  • Модуль 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;
    • Приложения, использующие кэши разных уровней.
  • Развернуть программу
Раcписание курсов
Вид:
17.10.2022 - 28.10.2022
15:00-19:00
Локация:Онлайн
Длительность:40 ак.ч.
Время:15:00-19:00
Тренер: Козлов Павел
65 400 руб.
Записаться
Смотреть полное расписание
Тренеры
Козлов Павел
Специалист в области разработки ПО
Павел работает в Luxoft с 2005 года. За это время он принимал участие в ряде проектов для ведущих российских и зарубежных компаний, таких как Boeing, Почта России, DHL, MVideo. В настоящее время он играет роль ведущего инженера-программиста в проекте по поддержке крупнейшей розничной сети по продаже электроники и бытовой техники в России. Главный интерес Павла - разработка масштабируемых приложений Java, а также предоставление технических решений для повышения производительности и надежности приложений.
Отзывы (4)
Хорошее комплексное обучение. Я узнал много нового о внутренней настройке и оптимизации java, Luxoft молодцы, спасибо вам и спасибо Владимиру Сонькину. Отличные материалы, примеры и образцы кода, обзоры и задания. Мне понравились повторения пройденного материала каждый день, я думаю, что это действительно полезно и вовлекает аудиторию.
Участник тренинга
Хорошие впечатления. Дан большой объем знаний. Повторение пройденного материала на занятиях полезно. Самое полезное для меня: сравнение GC и советы по настройке JDK. Единственное, хотелось бы добавить дополнительные сравнительные тесты между JIT (C2) и Graal. А так все замечательно!
Участник тренинга
Теоретические материалы – отличные. Понравилась демонстрация того, как нужно использовать инструменты для сравнительного анализа, интересные факты о внутренностях jvm и обзор полезных инструментов. Этот тренинг помог мне лучше понять, что нужно делать для устранения проблем с производительностью.
Участник тренинга
Тренинг оказался для меня крайне интересным. Все части курса были очень информативны и полезны с точки зрения их дальнейшего использования в профессиональной деятельности.
Участник тренинга
Показать все отзывы
Связанные курсы
Java Advanced I: функциональное, асинхронное и реактивное программирование
Курс посвящен современным функциональным, асинхронным и реактивным подходам к разработке на Java, и включает изучение NIO2, CompletableFuture, RxJava, Reactor, R2DBC, SSE, Spring Data reactive, WebClient, reactive WebSocket, RSocket.
Смотреть каталог
Ваши преимущества
Экспертность
Тренеры-эксперты из реальных проектов крупнейших компаний, лидеров в своей отрасли
Живое обучение
“Живая” коммуникация с тренером даже в онлайн-формате
Практика
Максимально наполненные практикой занятия, работа в группах, выполнение домашних заданий
Пользователь только что записался на курс ""
Спасибо!
Форма отправлена успешно.