Я не настолько знаком со Scala, но вот что, по-моему, происходит:
Прежде всего, целые числа хранятся в куче (как и должно быть, поскольку структура данных хранится в куче). Таким образом, мы говорим о доступной памяти кучи, а не о стеке памяти вообще (просто чтобы прояснить обоснованность того, что я собираюсь сказать дальше).
Настоящим фактом является то, что размер кучи Java по умолчанию довольно мал - я считаю, что он составляет всего 128 мегабайт (это, вероятно, действительно старое число, но дело в том, что число существует, и оно довольно мало ).
Значит, дело не в том, что ваша программа использует слишком много памяти, а в том, что Java просто не дает вам достаточно в первую очередь. Однако есть решение: минимальный и максимальный размеры кучи можно установить с помощью параметров командной строки -Xms
и -Xmx
. Их можно использовать как:
java -Xms32m -Xmx128m MyClass (starts MyClass with a minimum heap of 32 megabytes, maximum of 128 megabytes)
java -Xms1g -Xmx3g MyClass (executes MyClass with a minimum heap of 1 gigabytes, maximum of 3 gigabytes)
Если вы используете IDE, там, вероятно, есть опции для изменения размера кучи.