Быстроходная Java: Настройка и мониторинг JVM и приложений

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

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

  • 1. Диагностика и методология
  • 2. Управление памятью и сборка мусора (GC)
  • 3. Анализ производительности кода (JIT и бенчмаркинг)
  • 4. Работа с памятью вне кучи (Off-Heap)
  • 5. Сериализация
  • 6. Профилирование и поиск узких мест
  • 7. Поиск и устранение утечек памяти
  • 8. Кэширование
  • 9. Уверенная работа с флагами JVM
  • После курса слушатель сможет самостоятельно провести полный цикл оптимизации Java-приложения: от нагрузочного тестирования и профилирования до тонкой настройки GC, JIT и структур данных, включая устранение утечек и внедрение эффективного кэширования.

О курсе

Вы столкнулись с тем, что ваше Java-приложение тормозит под нагрузкой, потребляет подозрительно много памяти или нестабильно работает в продакшене? Стандартных настроек «из коробки» часто недостаточно, а непродуманное изменение флагов JVM только ухудшит ситуацию. Данный курс начинается с правильной методологии: вы изучите, что на самом деле означает термин «performance» с точки зрения теории массового обслуживания, видов нагрузочных тестов --- и даже в аспекте психологии восприятия! Мы разберем антипаттерны оптимизации и сформируем рекомендуемый пошаговый подход к тюнингу, а также освоим инструментарий нагрузочного тестирования (на примере JMeter). Это позволит вам не гадать, а системно выявлять узкие места.

Неотъемлемая часть курса посвящена сердцу JVM — сборщикам мусора и JIT-компиляции. Вы детально разберете все актуальные GC: от Serial и Parallel до современных Shenandoah, ZGC и даже экспериментального Epsilon. Научитесь выбирать оптимальный сборщик под конкретную задачу и использовать инструменты мониторинга (от jConsole и jstat до VisualVM и JMC). В результате вы получите готовый арсенал настроечных флагов JVM, алгоритм подбора GC и практические сценарии мониторинга.

Попутно мы раскроем тайны JIT-компиляции: встраивание методов, развертывание циклов, скалярную замену, спекулятивные оптимизации и прочую "алхимию". Вы узнаете, как многоуровневая компиляция и intrinsic-реализации ускоряют код, и сможете заглянуть в оптимизации через JIT Watch.

Половина курса — это реальная практика и промышленные инструменты. Вы освоите JMH для правильного бенчмаркинга, научитесь избегать типичных ошибок (напр., из-за Dead Code Elimination) и проектировать корректные микротесты. Мы перейдем к off-heap памяти через Unsafe и затем освоим современный Foreign Memory API, создавая эффективные структуры данных без нагрузки на GC. Отдельный блок — сериализация: вы сравните производительность Jackson, Protobuf, Kryo, FST и других форматов, наглядно увидите слабые места стандартной Java-сериализации. Далее вы овладеете профилированием с помощью async-profiler, JFR и AOP, научитесь находить блокировки и узкие места в реальном приложении.

Курс учит не только разгонять приложения, но и делать их стабильными в долгосрочной перспективе. Вы изучите все виды ссылок (Soft, Weak, Phantom) и освоите с добрый десяток приемов выявления утечек памяти. Обстоятельный раздел по кэшированию охватывает HTTP-кэши, кэш-провайдеры для Spring, особенности кэширование при работе с БД через Hibernate и даже принципы работы CPU/OS-кэшей.

Этот курс для разработчиков и архитекторов, которые хотят, чтобы их Java-приложения работали быстро, надежно и предсказуемо даже под экстремальной нагрузкой.

Для кого этот курс

1. Java-разработчики (Middle/Senior) Почему полезен: Получат инструменты для доказательной оптимизации, научатся выбирать GC, читать логи и профилировать приложения. 2. Архитекторы ПО Почему полезен: Поможет принимать обоснованные решения по выбору GC, сериализации и кэширования при проектировании high-load систем. 3. Инженеры по производительности / SRE Почему полезен: Даст полный стек: JMeter, JMH, async-profiler, связка JFR + JMC, плюс методология системного поиска узких мест. 4. Team Lead-ы Почему полезен: Позволит грамотно ставить задачи по оптимизации, ревьюить код с учетом производительности и внедрять культуру измеримых метрик. 5. Разработчики high-load / low-latency систем (к примеру, FinTech, Trading) Почему полезен: Даст практику работы с off-heap памятью, сериализацией без аллокаций и GC с минимальными паузами (G1, ZGC). 6. Разработчики, сопровождающие «легаси» Почему полезен: Научит выявлять причины утечек памяти и настраивать GC для старых проектов без переписывания кода.

Начальные требования

Обязательные требования (hard skills)

  1. Уверенное знание синтаксиса Java 8+

    • Понимание ООП (классы, интерфейсы, наследование, полиморфизм)

    • Работа с коллекциями (List, Map, Set) и исключениями

    • Написание многопоточного кода (Thread, Runnable, synchronized)

  2. Базовое понимание работы JVM

    • Что такое класслоадеры и как загружаются классы

    • Понятие «куча» (heap) и «стек» (stack)

    • Как запускается Java-приложение (java -jar, classpath)

  3. Опыт коммерческой разработки или сильных пет-проектов на Spring

    • Минимум 1 год активного написания кода на Java

    • Альтернатива: уверенное выполнение учебных проектов уровня «продвинутый»

  4. Навыки работы с командной строкой

    • Запуск JAR-файлов с параметрами (-Xmx, -XX:+PrintGCDetails)

    • Работа с переменными окружения (JAVA_HOME, PATH)

  5. Базовые знания SQL и JDBC

    • Понимание, как приложение обращается к базе данных (будет нужно в модулях по профилированию и кэшированию)

Рекомендуемые (но не строгие) требования

  • Знакомство с HTTP и REST (для учебных модулей по кэшированию и профилированию веб-приложений)

  • Опыт работы с Maven (для сборки JMH-проектов и лабораторных работ в Spring)

  • Базовое понимание сборки мусора на уровне «как-то там удаляются ненужные объекты» (можно получить из бесплатных статей до курса)

Что НЕ требуется (этому научим)

  • Глубокое знание внутренностей JVM (байт-кода, структуры GC, JIT-компиляции)

  • Опыт работы с профилировщиками (async-profiler, JFR)

  • Знание off-heap памяти и Unsafe

  • Опыт написания бенчмарков (JMH)

Наши преподаватели

Как проходит обучение

Формат и содержание занятий
Обучение полностью построено на видеозаписях лекций и практических разборов, которые можно смотреть в удобном темпе. Каждый модуль начинается с теоретической лекции, где инструктор объясняет, к примеру, внутреннее устройство JVM, механизмы сборки мусора, JIT-компиляции или профилирования — с использованием слайдов, схем и live-демонстраций кода. Затем следуют видео с разбором готовых проектов и лабораторных работ: вы видите реальный код, его запуск, а также шаги по настройке флагов JVM, отладке и профилированию. Все примеры сопровождаются поясненями, что и почему именно мы делаем, а также демонстрацией работы инструментов промышленного класса (JMH, async-profiler, VisualVM, JMC и т.д.).

Самостоятельная практика
К каждому модулю прилагаются исходные коды проектов и лабораторные задания. Вы останавливаете видео, самостоятельно повторяете разобранные эксперименты (например, пишите микротесты, ищете утечку памяти и т.п.), а затем сверяете свой результат с готовым решением из видео. Такой подход позволяет не просто смотреть, а сразу применять знания.

Программа курса

загружаем...

Что вы получаете

  • Вы — разработчик или инженер, который может взять любое тормозящее Java-приложение, измерить его профиль, настроить JVM, переписать критический код на off-heap или эффективную сериализацию, добавить кэширование --- и доказать ускорение через JMH-бенчмарки!

Сколько стоит обучение

Price: 16 000 
Вы попробовали и поняли, что вам сейчас не подходит этот курс? Ничего страшного, мы вернём вам деньги в течение 30-ти дней после покупки.

Часто задаваемые вопросы

Расскажите о курсе друзьям

Price: 16 000