У меня есть мультимодульный (более 20 модулей) проект Maven. Текущая проблема заключается в том, что когда я пытаюсь построить проект, он иногда завершается с ошибкой OOM во время выполнения тестов.
Интересно то, что Maven (когда проект создается без OOM) сообщает о так называемом параметре использования Total Memory
, который всегда составляет пару сотен мегабайт.
К сожалению, это не соответствует реальному уровню потребления памяти, который составляет около пары гигабайт ОЗУ (если быть точным, 4-6), согласно top
.
Я бы хотел как-то профилировать сборку Maven (например, Gradle имеет gradle-profiler , который позволяет вам профилировать вашу сборку с помощью различных инструментов, таких как Yourkit или Async Profiler) и посмотреть, какие модули потребляют наибольшее количество памяти.
Есть еще один способ найти модуль / тест, который отвечает за OOM - время, которое используется для запуска тестов для определенного модуля. Хотя я не совсем уверен, подходит ли эта техника в моей ситуации.