【发布时间】:2016-08-04 15:39:38
【问题描述】:
我正在尝试使用 SonarQube 来分析一个相当大的项目。我遇到了一个问题,它告诉我我没有足够的内存,所以我开始解决这个问题。我知道我需要增加 Java 可以使用的内存量,但我不明白它要我在哪里设置变量“SONAR_RUNNER_OPTS”。它一直告诉我它没有设置,所以它默认为 1024。但这显然还不够。
所以我问,我在哪里设置这个变量?该变量似乎存在于我的 ...\.sonarqube\bin\sonar-runner\bin 文件夹中的 sonar-runner.bat 文件中,但更改它并没有做任何事情,因为当我执行 MSBuild.SonarQube.Runner.exe end 命令时,MSBuild.SonarQube.Runner.exe 会立即删除这些文件以再次创建它们.
我该怎么办?
【问题讨论】:
-
您能否提供内存不足异常的堆栈跟踪,以便了解分析失败的阶段以及您的 SonarQube 服务器版本?这可能有助于我们减少内存使用量
-
@Dinesh-SonarSourceTeam 我明天上班时会回复你。它是 5.4,它是一个大量使用 JavaScript 和 C# 的 ASP 项目。我在另一篇文章中读到,对于 C/C++ 项目,运行程序可以拾取不属于那里的文件,并且可能会疯狂地增加大小,从而耗尽内存,但 C# 不应该是这种情况项目。
-
@Dinesh-SonarSourceTeam 如何从
MSBuild.SonarQube.Runner.exe获取日志?没有任何地方使用它的日志。 puu.sh/ohGTQ/7953fd351a.png -
您似乎将
SONAR_RUNNER_OPTS的值设置得太高,无法满足您机器/VM 上的可用资源。-Xms是 Java VM 从启动那一刻起应使用的最小内存量,根据您的屏幕截图 - 它无法启动,因为它无法分配所有内存。要么减少-Xms的值,要么增加VM/机器的可用内存。 -
机器有 16 GB 的 RAM,并告诉我可以使用 15 GB。它是 64 位的,所以我不太明白它怎么会被认为太高。