私は同じ問題を抱えていて、おそらく以前の回答/コメントを信じていないため、非常に異なる解決策を見つけました。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% ...