2015-11-03 2 views
0

У меня есть работа Jenkins, которая будет строить Java-проект, о котором я знаю, что некоторые из Unit-Tests довольно RAM жадные.Jenkins с Java Heap Space Исключение при выполнении JUnit-тестов

Я думаю, что у меня все еще что-то не так с назначениями памяти Jenkins, некоторые из моих Рабочих неудач с исключением OOM, более конкретно Java Heap Space.

Я дал самому Дженкинсу 2 ГБ, отредактировав файл /etc/default/jenkins. Чтобы гарантировать, что JUnit-Tests также имеет достаточную оперативную память, я назначил Global MAVEN_OPTS значение -Dmaven.surefire.heap=12g через графический интерфейс Jenkins.

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

+0

Знаете ли вы, что все тесты выполняются в одной JVM или для каждого из них запускается новая JVM? – Seb

+0

Не знаю. Как я вижу это? – toobee

+0

Вы устанавливаете свойство reuseForks в плагин surefire? – Seb

ответ

1

Одним из способов уменьшения влияния кучи запуска тестов является запуск всех ваших тестов jUnit в отдельных JVM. У этого есть компромисс со скоростью, однако это будет означать, что каждый отдельный тест класс займет больше времени. Время для каждого метода останется таким же, просто дополнительное время для установки для каждого тестового класса.

Вы можете изменить эту настройку в Maven плагин верный, добавьте эти строки в его настройки в вашем ПОМ:

<configuration> 
    <forkCount>1</forkCount> 
    <reuseForks>false</reuseForks> 
</configuration> 

Более подробную информацию по этой теме можно найти на maven page for forking and parallel test execution.