2011-01-04 3 views
6

При запуске моих модульных тестов в Maven на окнах я получаю исключение OutOfMemory. Я попытался добавить параметр -XX: -HeapDumpOnOutOfMemoryError для верной аргумента argLine, но не создается дамп-файл. Я также попытался добавить то же самое к MAVEN_OPTS, но все равно ничего, я просто получаю исключение OutOfMemory, и процесс зависает, пока я не рунет его вручную.surefire HeapDumpOnOutOfMemoryError

Мой ПОМ выглядит следующим образом:

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration>      
     <testFailureIgnore>false</testFailureIgnore> 
     <argLine>-Xms512m -Xmx512m -XX:PermSize=256m -XX:-HeapDumpOnOutOfMemoryError</argLine> 
     <forkMode>once</forkMode>    
    </configuration> 
</plugin> 

MAVEN_OPTS:

set MAVEN_OPTS=-XX:-HeapDumpOnOutOfMemoryError 

Есть ли у вас какие-либо идеи, почему не генерируется файл дампа?

+0

Ответ от @twillouer является правильным. – t0r0X

ответ

2

Попробуйте это:

set MAVEN_OPTS="-Dmaven.surefire.debug=\"-XX:-HeapDumpOnOutOfMemoryError\"" 
+0

Все еще ничего. Я не вижу выхода. Мне удалось найти утечку памяти, подключив ее с помощью профилировщика, так что в любом случае спасибо за ваш ответ. – Koby

1

Ваша утечка памяти может просто быть фиксированной, см http://jira.codehaus.org/browse/SUREFIRE-495. Возможно, вы захотите попробовать surefire 2.7.1 или новее.

+0

Спасибо за ответ, но моя проблема не связана с surefire. Я использую весну в своих тестах, и у меня разные контексты приложений для одних и тех же компонентов снова и снова. Поскольку весна кэширует контексты приложений по причинам производительности, ни один из них не был уничтожен, и я получаю ошибку OutOfMemory. Исправление состоит в том, чтобы изменить мои тесты, чтобы использовать одни и те же контексты, а не дублировать их в разных контекстах. – Koby

0

Я думаю, что вы забыли путь:

<argLine>-Xms512m -Xmx512m -XX:PermSize=256m -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp</argLine> 

с этим аргументом:

 -XX:HeapDumpPath=/tmp 
+0

Это не обязательно. Дамп кучи создается по умолчанию в каталоге проекта (я запускаю Maven через Netbeans). Когда это будет необходимо? Когда текущий каталог будет отличаться (и не записывается)? –

Смежные вопросы