Что-то подозрительное происходит.
Обычно, когда OutOfMemoryError
происходит во время работы нашего приложения, сообщение выглядит следующим образом:
Exception in thread "main" java.lang.OutOfMemoryError
at com.acme.GreatestProgramEver.main(Program.java:19)
В частности, нет сообщения, которое гласит: «Система исчерпала ресурсы. Обратитесь к следующей трассировке стека за подробностями», если только мы не отловим исключение и не сообщим о нем сами, убедившись в том, что выводится такое сообщение, правильный английский и все такое. И я подозреваю, что ОП не делает ничего подобного.
Однако я видел, как компилятор Java отображает именно это сообщение, когда ему не хватает памяти.
Это заставляет меня подозревать, что есть крошечная деталь, которую ОП забыл упомянуть:
Эта ошибка не возникает во время выполнения.
Эта ошибка возникает во время компиляции.
Итак, вашему компилятору нужно больше памяти.
Если вы используете IntelliJ IDEA:
Увеличение объема памяти, доступной для IntelliJ IDEA путем указания более высокого числа для -Xmx
в bin\idea64.exe.vmoptions
, поможет только внутреннему компилятору IDE при анализе исходных файлов при вводе, чтобы показать ошибки в редактор.
Чтобы увеличить объем памяти, доступной при фактическом построении, вам нужно открыть «Опции», перейти к «Сборка, выполнение, развертывание» -> «Компилятор» и указать большое число в «Кучи процесса сборки». размер (мегабайт): "
2000
следует делать это даже для большого проекта.
Примечание: все ответы, в которых упоминаются утечки памяти, неверны, поскольку эта проблема связана с компилятором, а не с вашим кодом. В то время, когда компилятор компилирует ваш код, ваш код едва ли существует, и тем более у него был шанс запустить, не говоря уже о выделении какой-либо памяти. Таким образом, ваш код утечки не имеет значения.