Java Advanced II: высокопроизводительная Java
О чём курс
Одно Java-приложение может работать в разы медленнее другого при идентичной бизнес-логике — здесь разбирают, как находить и устранять скрытые узкие места, из-за которых теряется производительность. Вы научитесь анализировать работу Garbage Collector, настраивать JIT-компилятор HotSpot и оптимизировать использование памяти, включая работу с off-heap структурами.
Внутри курса разбирают:
- Тюнинг JVM через профилировщики: от визуального анализа в Java VisualVM до глубокого погружения в Java Flight Recorder.
- Бенчмаркинг кода: как использовать JMH для точных замеров скорости работы алгоритмов.
- Оптимизацию сериализации: сравнение производительности JSON-библиотек (Jackson, GSON) и бинарных форматов (Protobuf, Kryo).
- Управление нативной памятью: создание структур данных вне кучи с использованием Unsafe и Foreign Memory Access API.
Программа ориентирована на разработчиков, которые хотят понимать, что происходит «под капотом» виртуальной машины Java, и уметь доводить приложения до высокой эффективности.
Программа обучения
- Модуль 1. Обзор тюнинга производительности
- Общие практики
- Стратегии тюнинга производительности
- Метрики производительности
- Как повысить производительность?
- Инструменты для измерения производительности
- JMeter
- Нагрузочное тестирование с помощью JMeter
- Как повысить производительность с помощью архитектуры?
- Лучшие практики для улучшения производительности кода
- Домашняя работа
- Модуль 2. Алгоритмы GC
- Использование памяти Java-объектами
- Общие подходы и алгоритмы сборщиков мусора
- Сборщик мусора Serial GC
- Сборщик мусора Parallel GC
- Сборщик мусора CMS
- Сборщик мусора G1
- Сборщик мусора Shenandoah
- Тюнинг сборщиков мусора
- Инструменты сбора и анализа метрик о сборке мусора
- Выбор оптимального сборщика мусора
- Модуль 3. JIT-компилятор HotSpot
- JIT компиляция
- Java байт-код
- Многослойная компиляция
- Кэш кода и его тюнинг
- Оптимизация кода
- Деоптимизация кода и когда она происходит
- Инструмент JITWatch для анализа результатов компиляции
- Виды оптимизаций
- Спекулятивные оптимизации
- Настройка компилятора
- AOT компиляция
- Домашняя работа
- Модуль 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)
- Сравнение производительности различных сериализаторов
- Модуль 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
Другие материалы автора 1
ВС Владимир Сонькин Все материалыОтзывов пока нет. Будьте первым!
Этот курс сейчас в процессе организации складчины. Нажмите кнопку «Записаться» и ожидайте старта — вам придёт уведомление. Когда складчина стартует, в карточке курса будет указан актуальный взнос. Текущая цена пока в процессе формирования и может отличаться от финальной.
Да, мы стремимся, чтобы финальный взнос был не больше ≈10% от оригинальной цены курса. Чем больше участников записывается в складчину, тем ниже выходит взнос для каждого.
Нажмите кнопку «Записаться» и авторизуйтесь на сайте через email (через ту же почту, которую будете использовать для входа). В личном кабинете вас будут ждать инструкции, как пригласить других участников — чем больше людей записалось, тем быстрее стартует складчина и тем ниже взнос. Как только складчина готова к приобретению, вам придёт уведомление.