Ошибка памяти при запуске модульных тестов в SonarQube — разветвленная виртуальная машина завершается, не попрощавшись должным образом

#java #maven #out-of-memory #sonarqube #maven-surefire-plugin

#java #maven #нехватка памяти #sonarqube #maven-верный плагин

Вопрос:

Мы постоянно получаем ошибки нехватки памяти при выполнении нашего анализа сонара. Это происходит периодически на разных машинах, но, похоже, как только вы ее получите, она сохраняется.

 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.16:test   (default-cli) on project optimus-client-web-configuration: Execution default-cli of goal org.apache.maven.plugins:    

maven-surefire-plugin:2.16:test failed: The forked VM terminated without saying properly goodbye. VM crash or System.exit called ?
[ERROR] Command wascmd.exe /X /C ""C:Program FilesJavajdk1.7.0_45jrebinjava" -javaagent:C:UserscxxxAppDataLocalTempjacocoagent8301608889470684052.jar=destfile=target/jacoco.exec,excludes=
*_javassist_* -jar C:redesign_Trunkoptimus-lms-serveroptimus-client-web-configurationtargetsurefiresurefirebooter2312966376869893038.jar C:redesign_Trunkoptimus-lms-serveroptimus-client-web-con
figurationtargetsurefiresurefire350975689095180011tmp C:redesign_Trunkxxx-xx-serverxxxtargetsurefiresurefire_45613339175612175619tmp"
  

Модульные тесты не завершаются ошибкой при запуске перед фазой sonar. Это происходит в одном конкретном тесте, который активирует конфигурацию Spring, чтобы проверить, что она работает нормально. Вероятно, этот тест потребляет больше памяти, чем большинство, поскольку он должен загружать весь контекст.

Я увеличил объем памяти в MAVEN_OPTS, чтобы использовать максимальную кучу 1024M. Добавлена эта конфигурация в мой pom

 <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.16</version>
                <configuration>
                    <argLine>-Xmx1024m</argLine>
                </configuration>
</plugin>
  

Ответ №1:

в этой конфигурации вы просто настраиваете плагин surefire для использования этой памяти при создании новой jvm, вам также необходимо увеличить память для mvn jvm

 export MAVEN_OPTS="-Xmx2048m"
  

попробуйте выше (с соответствующим объемом памяти)

Комментарии:

1. Чтобы сделать это непосредственно в команде Maven, добавьте это в параметр argLine следующим образом: mvn -DargLine=»-Xmx2048m» {… остальные аргументы maven}

Ответ №2:

Другие решения: запустите приложение [Eclipse IDE, SonarQube …] от имени администратора

Проблема:
1. Когда журнал ошибок содержит: ‘… Виртуальная машина завершила работу, не попрощавшись должным образом …’
2. Журнал ошибок содержит: «cmd.exe /C … ошибка что-то …»
3. Журнал ошибок содержит: ‘… java.io.tmpdirc:windows