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