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

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

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

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

Заменил% SONAR_RUNNER_OPTS% на -Xms256m -Xmx1024m, чтобы увеличить размер кучи в файле bat-сонара.Задайте параметр sonar.findbugs.effort как «Min» в глобальных параметрах сонара.

Но оба вышеуказанных метода не сработали для меня.

Ответы на вопрос(6)

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

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

 fabien747419 окт. 2017 г., 14:24
Это работает и для меня

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

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

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

 adnan kamili09 мая 2016 г., 10:29
удалить "=" из значений
 Denim Datta03 сент. 2013 г., 16:13
для меня это даетНеверный максимальный размер кучи: -Xmx512m -XX: MaxPermSize = 512m -XX: ReservedCodeCacheSize = 128m Не удалось создать виртуальную машину Java.
 posix9915 июн. 2017 г., 18:04
export SONAR_SCANNER_OPTS="-Xmx3062m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=128m" Работал и на windows, что касается комментария @zacran.
 zacran10 авг. 2016 г., 23:58
export SONAR_SCANNER_OPTS="-Xmx3062m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=128m" если вы используете SonarQube Scanner 2.5+ и используете Linux

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

Ответ: Поскольку сканер сообщества Sonar C ++, похоже, содержит ошибку, при которой он забирает ЛЮБОЙ файл с буквой «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% ...

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

вы анализируете большой проект, который, вероятно, имеет много нарушений. Взгляните на две темы в списке рассылки 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

чае это помогло вызвать сонар отдельно:

mvn clean install && mvn sonar:sonar

вместо

mvn clean install sonar:sonar

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

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

 wildloop16 февр. 2017 г., 13:52
Если вы используете Maven и все еще имеете эту проблему:export MAVEN_OPTS="-Xms256m -Xmx1024m"

Ваш ответ на вопрос