You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决SonarScanner执行时报java.lang.OutOfMemoryError: Java heap space错误?

SonarScanner 堆内存溢出问题解决方案

报错信息:

ERROR: Error during SonarScanner execution
java.lang.OutOfMemoryError: Java heap space

1. 核心问题定位

你之前调整的sonar.web.javaOpts、sonar.ce.javaOpts等均为SonarQube服务端的JVM参数,扫描阶段抛出的堆内存溢出属于SonarScanner客户端进程的问题,服务端配置对扫描端内存上限不生效,这是该问题最常见的配置误区。

2. 正确配置扫描端内存参数

根据你使用的扫描触发方式,选择对应配置:

  • 命令行直接调用sonar-scanner:执行扫描前先设置环境变量
    • Linux/macOS:export SONAR_SCANNER_OPTS="-Xmx4G -XX:MaxMetaspaceSize=512m"
    • Windows CMD:set SONAR_SCANNER_OPTS="-Xmx4G -XX:MaxMetaspaceSize=512m"
    • Windows PowerShell:$env:SONAR_SCANNER_OPTS="-Xmx4G -XX:MaxMetaspaceSize=512m"
  • CI流水线(如Jenkins)调用:在SonarScanner执行步骤前添加上述环境变量配置,或在SonarScanner全局工具配置中指定JVM参数
  • Maven/Gradle触发扫描:
    • Maven:mvn sonar:sonar -Dsonar.scanner.opts="-Xmx4G"
    • Gradle:./gradlew sonar -Dsonar.scanner.opts="-Xmx4G"

3. 清理冗余排除规则降低扫描负载

你当前配置的排除规则存在冲突冗余:public/**/*已经完全排除了public目录下的所有内容,后续配置的public/admin/images/**、public/assets/**/*等子路径规则完全无效,多余的规则会额外加重扫描器的规则匹配负担。
建议清理冗余排除项后,可额外添加常见非代码文件排除规则,减少扫描文件量:

sonar.exclusions=**/*.zip,**/*.rar,**/*.jar,**/*.war,**/node_modules/**/*,**/.git/**/*

4. 校验实际扫描范围

执行扫描时添加-X参数开启调试日志,查看Indexing files相关的日志条目,确认是否有不必要的大文件、二进制文件被意外纳入扫描,及时调整排除规则。

5. 大项目拆分扫描

如果是多模块大型项目,可拆分模块单独执行扫描,避免单次扫描加载过多文件导致内存占用过高。

内容的提问来源于stack exchange,提问作者Paras Nakum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 02:45:00