Анализ памяти

Тренинг по работе с дампами памяти

Титульный слайд

Описание

“Это Java памяти много ест. Надо ей ещё добавить” – типичная отмазка резолюция от разработчиков, которым некогда/неохота/тяжело разбираться с истинной причиной очередного OutOfMemoryError на production. Повезло, если такое предложение прокатит и не повторится, но, скоре всего, рано или поздно разбираться всё же придётся.

В таких случаях, как правило, нужно сделать снимок памяти (heap dump), но с ним не всё так просто: он может много весить, его бывает не легко достать с production, в него не посмотришь “глазами” (он бинарный), а в спец. инструментах данных столько, что можно утонуть.

На этом треннинге вы научитесь снимать дампы памяти разными способами (в зависимости от окружения), ускорять и упрощать их передачу к себе для анализа и, главное, овладеете техниками и инструментами для эффективного обнаружения источников проблем с потреблением памяти: от построения наглядных отчётов до глубокого анализа графа объектов через язык запросов.

Формат и стоимость тренинга приведены на странице серии тренингов про Производительность.

Содержание

Теория 🎓

  1. Что такое дамп памяти JVM
    1. И чем он не является
    2. Связь с core dump
  2. Предостережения о дампах памяти
    • (Безопасность и обфускация дампов)
  3. Способы получения
    1. Внешними инструментами (4 шт.)
    2. Инструментами JDK (4 шт.)
    3. Алгоритм выбора инструмента
    4. Как сделать снятие дампов автоматическим
  4. Основы устройства дампов:
    1. Особенности размеров объектов в памяти JVM
    2. GC roots
    3. Shallow size VS retained size
    4. Дерево доминаторов
  5. Анализ дампов в Eclipse MAT
    1. Основные данные из дампа в Eclipse MAT
    2. Базовые приёмы навигации по куче
    3. Продвинутые приёмы (включая OQL)

Практика ⚒️

Разбор четырёх багов (разновидностей утечек памяти) на примере лабораторного приложения Spring PetClinic REST по схеме:

  1. Описание кейса
  2. Имплементация (пояснения к реализации)
  3. Проблема
  4. Обнаружение (подсказки к проведению анализа)
  5. Причина

Все три кейса последовательны: для воспроизведения следующего нужно будет найти и устранить причину предыдущего.

Примеры слайдов

Из теоретической части занятия


Интересно?

Если хотите, чтобы я провёл этот тренинг в вашей компании, вы можете:

Владимир Плизга
Владимир Плизга
Программный инженер

Любимая технология: здравый смысл

Следующий
Предыдущий