为什么Scala并行集合有时会导致OutOfMemoryError?

FUD*_*FUD 5 collections parallel-processing scala

大约需要1秒钟

(1 to 1000000).map(_+3)
Run Code Online (Sandbox Code Playgroud)

虽然这给出了java.lang.OutOfMemoryError:Java堆空间

(1 to 1000000).par.map(_+3)
Run Code Online (Sandbox Code Playgroud)

编辑:

我有标准的scala 2.9.2配置.我在scala提示符下键入此内容.在bash中我可以看到[-n"$ JAVA_OPTS"] || JAVA_OPTS =" - Xmx256M -Xms32M"

我没有在我的环境中设置JAVA_OPTS.

100万个整数= 8MB,创建列表两次= 16MB

Nic*_*las 9

它似乎肯定与JVM内存选项存储Parralel集合所需的内存有关.例如:

scala> (1 to 1000000).par.map(_+3)
Run Code Online (Sandbox Code Playgroud)

最后OutOfMemoryError我第三次尝试评估它,而

scala> (1 to 1000000).par.map(_+3).seq
Run Code Online (Sandbox Code Playgroud)

从未失败过.问题不在于计算它是Parrallel集合的存储.