4

Sonar Runner 2.2 と set を使用しSONAR_RUNNER_OPTS=-Xmx8000mていますが、次のエラーが発生します。

Final Memory: 17M/5389M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
ERROR: Unable to execute Sonar
ERROR: Caused by: Java heap space

どうすればいいの?

4

3 に答える 3

2

私は同じ問題を抱えていて、おそらく以前の回答/コメントを信じていないため、非常に異なる解決策を見つけました。1,000 万行のコード (F16 戦闘機よりも多いコード) を使用すると、1 行あたり 100 文字 (驚異的なサイズ) の場合、コード ベース全体を 1GB のメモリにロードできます。簡単な数学。8GB のメモリが故障するのはなぜですか?

回答: コミュニティの Sonar C++ スキャナには、拡張子に文字 'c' が含まれるすべてのファイルを検出するというバグがあるようです。これには、.doc、.docx、.ipch などが含まれます。したがって、メモリが不足している理由は、300 MB の純粋なコードであると考えているファイルを読み込もうとしているが、実際には無視する必要があるためです。

解決策: プロジェクト内のすべてのファイルで使用されている拡張子を見つけます (ここを参照)。

次に、これらの他の拡張子を除外として sonar.properties ファイルに追加します。

sonar.exclusions=**/*.doc,**/*.docx,**/*.ipch

次に、メモリ制限を通常の量に戻します。

%JAVA_EXEC% -Xmx1024m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=128m %SONAR_RUNNER_OPTS% ...
于 2013-12-09T22:04:02.907 に答える
0

テストケースの実行中に同じ問題に直面しました。Visuval VMの助けを借りて、テスト ケースの実行中に PermGen に割り当てられている最小および最大メモリを分析し、80MB を PermGen に割り当てていることを発見しました。したがって、次のように、プロパティ セクションの pom.xml を介して同じものを管理できます。

<properties>
    <argLine>-XX:PermSize=256m -XX:MaxPermSize=256m</argLine>
</properties>

この<argLine>タグは、 in<maven-surefire-plugin>または in のいずれかで使用できます<properties>。セクションで使用する利点は、テスト ケースとソナーの両方で同じ構成を利用できることです。こちらを参照してください。

于 2016-05-04T19:09:38.840 に答える