Sonar - OutOfMemoryError: пространство кучи Java

Я развертываю большой проект Java на Sonar, используя "Findbugs" в качестве профиля и получая ошибку ниже:

Caused by: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError:
Java heap space

Что я пытался решить это:

  • Замените% SONAR_RUNNER_OPTS% на -Xms256m -Xmx1024m, чтобы увеличить размер кучи в файле bat bat-sonner.
  • Поместите параметр "sonar.findbugs.effort" как "Min" в глобальные параметры Sonar.

Но оба метода выше не работали для меня.

Ответы

Ответ 1

У меня была та же проблема, и я нашел совсем другое решение, возможно, потому, что мне трудно сгладить предыдущие ответы/комментарии. С 10 миллионами строк кода (что больше кода, чем в истребителе F16), если у вас есть 100 символов на строку (сумасшедший размер), вы можете загрузить всю базу кода в 1 ГБ памяти. Я установил 8 ГБ памяти, и все еще не удалось. Почему?

Ответ. Потому что сканер сообщества Sonar С++, похоже, имеет ошибку, где он берет ЛЮБОЙ файл с буквой "c" в своем расширении. Это включает в себя .doc,.docx,.ipch и т.д. Следовательно, причина, по которой у него заканчивается память, заключается в том, что она пытается прочитать какой-то файл, который, по его мнению, составляет 300 мб чистого кода, но на самом деле его следует игнорировать.

Решение. Найдите расширения, используемые всеми файлами в вашем проекте (подробнее см. здесь):

dir /s /b | perl -ne 'print $1 if m/\.([^^.\\\\]+)$/' | sort -u | grep c

Затем добавьте эти другие расширения как исключения в файл sonar.properties:

sonar.exclusions=**/*.doc,**/*.docx,**/*.ipch

Затем установите ограничения памяти на обычные суммы.

%JAVA_EXEC% -Xmx1024m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=128m %SONAR_RUNNER_OPTS% ...

Ответ 2

это сработало для меня:

SONAR_RUNNER_OPTS="-Xmx3062m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=128m"

Я установил его прямо в файле сонара (.bat)

Ответ 3

У меня была такая же проблема при запуске сонара с мавеном. В моем случае это помогло вызвать сонар отдельно:

mvn clean install && mvn sonar:sonar

вместо

mvn clean install sonar:sonar

http://docs.sonarqube.org/display/SONAR/Analyzing+with+Maven

Примечание: поскольку мое решение связано с Maven, это не прямой ответ на вопрос. Но это может помочь другим пользователям, которые сталкиваются с этим.

Ответ 4

Что вы можете сделать, чтобы создать свой собственный профиль качества только с некоторыми правилами Findbugs, а затем постепенно добавлять все больше и больше, пока не достигнете его OutOfMemoryError. Вероятно, существует только одно правило, которое делает все это неудачным, потому что ваш код нарушает его - и если вы отключите это правило, оно, безусловно, будет работать.

Ответ 5

Я знаю, что эта ветка немного устарела, но эта информация может помочь кому-то.

Для меня проблема была не такой, как предложенный верхним ответом с плагином С++. Вместо этого моя проблема была в Xml-Plugin (https://docs.sonarqube.org/display/PLUG/SonarXML) после того, как я отключил его, анализ снова работал.

Ответ 6

Проблема заключается в стороне FindBugs. Я полагаю, вы анализируете большой проект, который, вероятно, имеет много нарушений. Взгляните на две темы в списке рассылки Sonar с той же проблемой. Есть несколько идей, которые вы можете попробовать для себя.

http://sonar.15.n6.nabble.com/java-lang-OutOfMemoryError-Java-heap-space-td4898141.html

http://sonar.15.n6.nabble.com/java-lang-OutOfMemoryError-Java-heap-space-td5001587.html

Ответ 7

Я знаю, что это старый, но я просто отправляю свой ответ в любом случае. Я понял, что использую 32-битный JDK (версия 8), и после его удаления и последующей установки 64-битного JDK (версия 12) проблема исчезла.

Ответ 8

Вы можете решить эту проблему, увеличив максимальный объем памяти, выделенный для соответствующего процесса, увеличив параметр -Xmx памяти для соответствующего процесса Java в файле sonar.properties

под SonarQube/conf/sonar.properties

раскомментируйте ниже строки и увеличьте объем памяти, как вы хотите:

For Web: Xmx5123m -Xms1536m -XX:+HeapDumpOnOutOfMemoryError
For ElasticSearch: Xms512m -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError
For Compute Engine: sonar.ce.javaOpts=-Xmx1536m -Xms128m -XX:+HeapDumpOnOutOfMemoryError