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