Почему это приводит к сбою компилятора? - PullRequest
3 голосов
/ 07 марта 2012

У меня есть этот код:

var nodeMap:Map[Int, List[Node]] = Map[Int, List[Node]]()

nodeMap = Map[Int, List[Node]]() ++ nodes.par.groupBy( x => x.getClosest(centers))

x.getClosest возвращает Int. Когда я собираюсь это скомпилировать, компилятор падает, говоря, что ему не хватает памяти. Тем не менее, когда я делаю это:

var nodeMap:Map[Int, List[Node]] = Map[Int, List[Node]]()

nodeMap = nodes.groupBy( x => x.getClosest(centers))

Работает нормально.

Почему?

1 Ответ

5 голосов
/ 07 марта 2012

Компилятор Scala имеет некоторые проблемы со сложными выражениями;если у вас закончилась память (т.е. OutOfMemoryException), это, скорее всего, ошибка, однако чаще всего компилятору не хватает места в стеке, и в этом случае вы можете добавить флаг -Xss=256m (где число явно увеличиваетсявам), чтобы обойти проблему.Это особенно характерно для сложных выражений (например, для конкатенации строк и списков).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...