У меня была такая же проблема, и я нашел совсем другое решение, возможно потому, что я не верю ни одному из предыдущих ответов/комментариев. С 10 миллионами строк кода (это больше кода, чем в истребителе F16), если у вас есть 100 символов в строке (сумасшедший размер), вы можете загрузить всю базу кода в 1 ГБ памяти. Простая математика. Почему 8 ГБ памяти не удается?
Ответ: Поскольку сканер сообщества Sonar C++, похоже, имеет ошибку, где он берет ЛЮБОЙ файл с буквой «c» в его расширении. Это включает в себя .doc, .docx, .ipch и т. Д. Следовательно, причина, по которой у него заканчивается память, заключается в том, что она пытается прочитать файл, который, по его мнению, составляет 300 Мб чистого кода, но на самом деле его следует игнорировать.
Решение: найдите расширения, используемые всеми файлами в вашем проекте (see here).
Затем добавить эти другие расширения, как исключения в файле sonar.properties:
sonar.exclusions=**/*.doc,**/*.docx,**/*.ipch
Затем установите свои пределы памяти обратно в обычных количествах:
%JAVA_EXEC% -Xmx1024m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=128m %SONAR_RUNNER_OPTS% ...
использование аргументов VM как -Xms512m -Xmx1024m – swamy