Анализ сонара выдает ошибку памяти, должен ли я увеличить пространство кучи JVM Ant или Sonar server?

Я анализирую большой проект в Sonar и получаю следующую ошибку:

[sonar:sonar] 03:55:39.511 INFO  p.PhasesTimeProfiler - Execute decorators...

BUILD FAILED
[...]
[...] java.lang.OutOfMemoryError: Java heap space
at org.sonar.batch.index.MeasurePersister.model(MeasurePersister.java:127)
at org.sonar.batch.index.MeasurePersister.getMeasuresToSave(MeasurePersister.java:117)
at org.sonar.batch.index.MeasurePersister.dump(MeasurePersister.java:70)
at org.sonar.batch.index.DefaultPersistenceManager.dump(DefaultPersistenceManager.java:63)
at org.sonar.batch.phases.Phases.execute(Phases.java:95)
at org.sonar.batch.bootstrap.ProjectModule.doStart(ProjectModule.java:139)
at org.sonar.batch.bootstrap.Module.start(Module.java:83)
at org.sonar.batch.bootstrap.BatchModule.analyze(BatchModule.java:131)
at org.sonar.batch.bootstrap.BatchModule.doStart(BatchModule.java:121)
at org.sonar.batch.bootstrap.Module.start(Module.java:83)
at org.sonar.batch.bootstrap.BootstrapModule.doStart(BootstrapModule.java:121)
at org.sonar.batch.bootstrap.Module.start(Module.java:83)
at org.sonar.batch.Batch.execute(Batch.java:104)
at org.sonar.ant.Launcher.execute(Launcher.java:78)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.sonar.ant.SonarTask.delegateExecution(SonarTask.java:244)
at org.sonar.ant.SonarTask.execute(SonarTask.java:193)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:392)
at org.apache.tools.ant.Target.performTasks(Target.java:413)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:442)

должен ли я увеличить пространство кучи java запущенного сервера Sonar или целевой объект Ant, выполняющий задание Sonar?

1 ответов


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

Это очень похожий вопрос кстати: как увеличить пространство кучи Java Sonar

для использования Ant командной строки

цитата из ответа Марка О'Коннора на другой вопрос:

задача Sonar ANT выполняется как часть ANT, поэтому вам нужно установить JVM куча с использованием стандартного параметра среды ANT. Например:

экспорт ANT_OPTS= - Xmx256m

Примечания:

  • это для Linux, для Windows, используйте set команда
  • это строго для кучи пространства. для Permgen используйте -XX:MaxPermSize=<desired amount>

это еще более похожий вопрос: ошибка сборки java.ленг.OutOfMemoryError: пространство кучи Java

Для Eclipse IDE

цитата из статьи http://soenkerohde.com/2008/06/change-eclipse-ant-settings-when-you-run-out-of-memory/

  • в Eclipse открыть меню:Run ->Внешние Инструменты ->Открыть Диалог Внешних Инструментов...
  • выберите сценарий сборки, который вы хотите изменить слева
  • выберите JRE вкладка справа
  • установить вслед за as параметры VM: - Xms768m-Xmx1024m-XX: MaxPermSize=512m

Для IntelliJ Idea

эта тема форума полезна:ANT построить пространство кучи java

цитата из ответов:

пожалуйста, убедитесь, что вы увеличили кучу в правильном месте. Вам нужно нажать кнопку "Свойства" в окно инструментов муравья идеи редактировать 'максимальный размер кучи размер (Мб)' поле есть.

кроме того, со страницы IntelliJ Idea:Увеличение Памяти

цитата из статьи:

куча памяти процесса сборки не зависит от кучи памяти IntelliJ IDEA и освобождается после завершения процесса сборки.

для увеличения кучи памяти: Откройте Свойства Файла Сборки окне. В максимальный размер "кучи" поле, Введите необходимый объем памяти.

для непрерывной интеграции Дженкинса и сборки Ant

этот вопрос полезно : как использовать Java Options в Jenkins ant build tool для установки ANT_OPTS

цитата из ответа:

установите параметры JAVA как-Xmx512m-XX: MaxPermSize=256m только без ANT_OPTS=

на Maven строит эта статья использовать: как увеличить Maven heapspace в Hudson builds

  1. перейдите к вашей работе hudson,
  2. клик настроить,
  3. прокрутите вниз до Создать Раздел и
  4. выберите дополнительно.
  5. ввести его в MAVEN_OPTS: - Xmx512m-XX: MaxPermSize=128m