Caused by: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError:
Java heap space
我尝试了以下方法来解决这个问题:
- 在sonar-runner批处理文件中,用-Xms256m -Xmx1024m替换%SONAR_RUNNER_OPTS%,以增加堆大小。
- 将"sonar.findbugs.effort"参数设置为Sonar全局参数中的"Min"。
但是上述两种方法都没有对我起作用。
Caused by: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError:
Java heap space
我尝试了以下方法来解决这个问题:
但是上述两种方法都没有对我起作用。
我曾经遇到同样的问题,并找到了一个非常不同的解决方案,可能是因为我很难接受之前的答案/评论。如果您有100个字符每行(一个疯狂的尺寸),那么您可以将整个代码库加载到1GB内存中。我将其设置为8GB内存,但仍然失败了。为什么呢?
答案:因为社区Sonar C++扫描器似乎存在一个错误,它会捕捉任何文件名包含字母“ c”的文件。这包括.doc、.docx、.ipch等。因此,它耗尽内存的原因是因为它试图读取一些文件,它认为这是纯代码300MB,但实际上应该忽略它。
解决方案:查找项目中使用的所有文件的扩展名(在此处查看更多信息):
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% ...
这个对我起作用:
SONAR_RUNNER_OPTS="-Xmx3062m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=128m"
我直接在sonar-runner(.bat)文件中设置它
当我使用maven运行sonar时,遇到了同样的问题。在我的情况下,单独调用sonar有所帮助:
mvn clean install && mvn sonar:sonar
而不是
mvn clean install sonar:sonar
http://docs.sonarqube.org/display/SONAR/Analyzing+with+Maven
备注:因为我的解决方案连接到了Maven,所以这不是直接回答问题的答案。但它可能会帮助其他遇到此问题的用户。
export MAVEN_OPTS="-Xms256m -Xmx1024m"
- kinjelomSonarQube/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
我知道这已经过时了,但我还是要发表我的答案。我意识到我正在使用32位的JDK(版本8),在卸载它并安装64位的JDK(版本12)后,问题消失了。
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
export SONAR_SCANNER_OPTS="-Xmx3062m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=128m"
。 - zacranexport SONAR_SCANNER_OPTS="-Xmx3062m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=128m"
这段代码是关于设置Sonar Scanner的选项,用于控制内存和代码缓存大小。此代码在Windows上也可以使用,如@zacran所述。 - posix99