如何解决Sonarqube java.lang.OutOfMemoryError:java堆空间



我使用的是Sonarqube社区版本。我收到以下错误,

Exception in thread "LOG_FLUSHER" Exception in thread "CHECKPOINT_WRITER" java.lang.OutOfMemoryError: Java heap space
at java.util.ArrayList.iterator(ArrayList.java:840)
at java.util.Collections$SynchronizedCollection.iterator(Collections.java:2031)
at com.persistit.Persistit.pollAlertMonitors(Persistit.java:2285)
at com.persistit.Persistit$LogFlusher.run(Persistit.java:192)
java.lang.OutOfMemoryError: Java heap space
at java.util.HashMap$Values.iterator(HashMap.java:968)
at com.persistit.Persistit.earliestDirtyTimestamp(Persistit.java:1439)
at com.persistit.CheckpointManager.pollFlushCheckpoint(CheckpointManager.java:271)
at com.persistit.CheckpointManager.runTask(CheckpointManager.java:301)
at com.persistit.IOTaskRunnable.run(IOTaskRunnable.java:144)
at java.lang.Thread.run(Thread.java:748)
WARNING: WARN: [JOURNAL_FLUSHER] WARNING Journal flush operation took 7,078ms last 8 cycles average is 884ms
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
INFO: Total time: 1:17.852s
ERROR: Error during SonarQube Scanner execution
ERROR: Java heap space
ERROR:
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "CLEANUP_MANAGER"
INFO: Final Memory: 40M/989M
INFO: ------------------------------------------------------------------------
The SonarQube Scanner did not complete successfully

我已经更改了sonar.properties中的大小,但我仍然面临同样的问题。如何解决这个问题。

sonar.web.javaOpts=-Xmx4G -Xms2048m -XX:+HeapDumpOnOutOfMemoryError
sonar.ce.javaOpts =-Xmx4G -Xms2048m -XX:+HeapDumpOnOutOfMemoryError 
sonar.search.javaOpts=-Xmx4G -Xms2048m -XX:+HeapDumpOnOutOfMemoryError

您所更改的是为SonarQube本身分配内存的设置。

您需要更改的是为分析过程分配内存的设置。你还没有说你使用的是哪种分析仪,所以细节会有所不同,但

  • 用于SonarQube扫描仪export SONAR_SCANNER_OPTS="-Xmx512m"
  • 用于Mavenexport MAVEN_OPTS="-Xmx512m"的SonarQube扫描仪

Project中的大文件导致了这个问题,对我来说,50MB的XML文件会出现这个错误,而这个文件对分析过程并不重要。我在配置文件(SonarQube.Analysis.xml(中排除了这个文件,解决了这个问题

尝试使用以下分析属性缩小要扫描/分析的文件的范围。将源直接指向Workspace中的SRC路径将避免其他不需要的文件并且可能消耗非常少的内存。或添加大型文件的排除项。

sonar.language=java
sonar.sources=Proj1/sub1/src
sonar.java.binaries=.
sonar.exclusions=**/*.docx,**/*.zip,**/*.ear

另外,请分别尝试使用以下Java内存或堆内存选项。

sonar.web.javaOpts=-Xmx1024m -Xms512m
sonar.web.javaOpts=-Xmx1024m -Xms512m -XX:+HeapDumpOnOutOfMemoryError
sonar.ce.javaOpts=-Xmx2048m -Xms512m
sonar.ce.javaOpts=-Xmx12g -Xms3g -XX:+HeapDumpOnOutOfMemoryError

此外,尝试更新下方的环境变量

ANT_OPTS=-Xms512m -Xmx1800m
SONAR_SCANNER_OPTS=-Xmx1024m -Xms512m
SONAR_RUNNER_OPTS=-Xmx1024m -XX:MaxPermSize=512m

所有上述性质也可以添加到">$SONARQUBE_HOME/conf/sonar.properties";文件

相关内容

最新更新