Scala控制台:OutOfMemoryError:超出GC开销限制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala控制台:OutOfMemoryError:超出GC开销限制相关的知识,希望对你有一定的参考价值。

规模:

(1 to 100000000).toList.foldLeft(0)((acc, x) => acc + x)

药剂:

1..100000000 |> Enum.to_list |> List.foldl(0, fn x, acc -> x + acc end)

它们具有相同的功能。但是,JVM只是抛出GC愤怒异常,而BEAM可以安全地处理它。我只是好奇为什么JVM无法处理这种情况?它是JVM的故障还是只是Scala编译器? (我知道我可以使用Stream或View来处理这种情况)

enter image description here

答案

我不知道Elixir如何处理这个操作,但是toList将创建一个包含100000000个条目的真实List对象。如果跳过该步骤,则操作也将在Scala中成功:

scala> (1 to 100000000).foldLeft(0)((acc,x) => acc + x)
res1: Int = 987459712

以上是关于Scala控制台:OutOfMemoryError:超出GC开销限制的主要内容,如果未能解决你的问题,请参考以下文章

OutofMemoryError 使用 sbt 程序集创建胖 jar

OutOfMemoryError:Neo4j 中的 Java 堆空间

OutOfMemoryError:Neo4j中的Java堆空间

在 IntelliJ 中从 sbt 控制台设置 JVM 堆大小

java.lang.OutOfMemoryError: PermGen 空间异常

Jenkins上构建时报内存溢出错误OutOfMemoryError