JavaPerformance3
Форк из trv/JavaPerformance
Описание
Задание для самостоятельной работы
Языки
- Java100%
5 месяцев назад
5 месяцев назад
5 месяцев назад
5 месяцев назад
4 месяца назад
readme.md
Задание на практическую работу по модулю Java Performance
Задание #1 (Object size)
- Необходимо разработать универсальное решение для вычисления размера занимаемой памяти (shallow/deep) java-объектом;
- Решение необходимо применить в утилите ObjectSizeUtil (модуль homework_1);
- Модульные тесты ObjectSizeUtilTest для утилиты должны отработать успешно.
Задание #2 (Memory leak)
- Необходимо проанализировать утилизацию ресурсов для приложения PartyParrot (модуль homework_2);
- Приложение необходимо запускать с heap size <= 100Mb;
- Если будет обнаружена утечка памяти, необходимо её устранить.
Задание #3 (Async-profiler)
- Необходимо проанализировать утилизацию CPU для приложения PartyParrot с помощью async-profiler;
- Для анализа необходимо получить снимки JFR с использованием Java API Async-profiler;
- Формирование JFR должно происходить только в режиме профилирования (по умолчанию файл JFR не должен писаться при каждом вызове метода);
- По результату анализа необходимо подтвердить или опровергнуть результат анализа и оптимизации из задания 2.
Задание #4 (JMH)
- Необходимо написать benchmark для метода Recolor.recolor() с использованием JMH;
- Замеры необходимо реализовать в новом модуле;
- Необходимо предложить вариант оптимизации метода Recolor.recolor() (например реализовать через Stream API, использовать распараллеливание и т.д.);
- Проанализировать результаты benchmark для старой и новых версий метода Recolor.recolor();
- По результатам принять решение какой вариант метода самый производительный;
- Все результаты тестов необходимо прикрепить к PR.
Как работать над заданием?
- Создаёте от master свою новую ветку с типом release и с именем по шаблону "Фамилия_Модуль_Задание" (например: release/taranov_homework_1);
- Клонируете проект из новой ветки в локальный репозиторий;
- Делаете доработки у себя в локальном репозитории;
- Заливаете свои доработки в новую feature ветку (например feature/taranov_homework_1);
- Делаете PR в свою исходную релизную ветку (из которой клонировали проект).
Условие успешной сдачи работы (критерии приемки)
- Проект компилируется и запускается;
- Модульные тесты отрабатывают успешно;
- Результат review PR = approve.