Запись трансляции

Видео запись трансляции - https://youtu.be/LxE1RsZwMPQ

Подготовка к участию в семинаре

Для выполнения практической части семинара вам понадобится личный компьютер/ноутбук. Материал протестирован на Windows 7/10, Linux и MacOS.

Дальнейшие инструкции предполагают, что директория LABDIR используется для установки учебных материалов.

Погдотовка ПО

Java

Вам потребуется JDK 8 (update 144 или выше) от Oracle или OpenJDK.

git

Для работы с материалом семинара вам понадобится git клиент с поддержкой коммандной строки.

Maven

Для запуска демонстрационных проектов необходим Maven версии 3.3.9 или выше.

После инсталяции убедитесь, что команда mvn --version корректно работает из консоли и возвращает правильные номера версий.

VisualVM

VisualVM входит в состав JDK 8, мы будем использовать последнюю версию 1.4.3. VisualVM доступна на оффициальном сайте - https://visualvm.github.io/.

Eclipse Memory Analyzer (опционально)

Eclipse MAT не будет использоваться в демонстрационных примерах, но если у вас возникнет желание попробовать инструмент самостоятельно, вы можете найти диструбутив тут.

HeapLib CLI

HeapLib библиотека используящая модифицированную версию парсера дампов NetBeans для возможности програмоного анализа дампов памяти JVM. Проект включает CLI позволяющий работать в дампами из коммандной строки.

Скачайте heap-cli-0.1.jar по ссылке и coхраните в директории LABDIR.

Выполните следующюю комманду java -jar LABDIR/heap-cli-0.1.jar --commands В результате должен быть распечатан список подкомманд sjk. grep - A simple way to extract strings and other simple data from dump histo - Class histogram exec - OQL Script executor mask - Patch heap dump on disk to mask out certain data

Загрузка учебных материалов

Мы будет использовать директорию LABDIR/ для разимещения всех учебных материалов.

Пример deadlock

В папке LABDIR/ выполните следующие : git clone -b bench/deadlock/master https://github.com/aragozin/proflab.git deadlock
cd deadlock
mvn clean package
Сборка должна завершиться успешно.

Пример JEE eCommerce

В папке LABDIR/ выполните следующие команды: git clone https://github.com/aragozin/BroadLeafCommerce-DemoSite.git blc-demo
cd blc-demo
mvn clean package

Сборка должна закончиться успешно. mvn -P run test

Команда вызывает развёртывание компонентов приложения. При первом запуске это может занять несколько минут.

После успешного завершения команды, проверьте доступоность приложения http://localhost:8080. Затем остановить демонстрационный стенд командой ниже.

mvn clean

Демострационные примеры

Работа с дампом Broad Leaf Commerce

Получение дампа

Запустите VisualVM.

Перейдите в директорию LABDIR/blc-demo. Выполните следующую комманду: mvn -P run_n_load test Комманда запускает приложение и генератор нагрузки.
После завершения коммады подключитесь в VisualVM к процессу com.commerce.SiteApplication и снимите дамп памяти.
Завершите стенд коммандой: mvn clean Сохраните дамп памяти в директории LABDIR

Пример OQL

var summary = {}; length(map( filter( heap.objects(heap.findClass("java.lang.ref.Finalizer")), function(f) { return !identical(f, f.next); } ), function(f) { var cname = f.referent.clazz.name var rsize = rsizeof(f.referent); if (!summary[cname]) { summary[cname] = {name: cname, count: 1, rsize: rsize}; } else { summary[cname].count++; summary[cname].rsize += rsize; } return rsizeof(f.referent); } )); summary;

Работа с дампом deadlock

Запустите VisualVM.

Перейдите в директорию LABDIR/deadlock. Выполните следующую комманду: mvn -P rw_lock test После зависания примера, снимите дамп памяти в VisualVM и сохраните его к директирии LABDIR