IntelliJ上的java.lang.StackOverflowError

时间:2019-03-16 01:52:03

标签: scala apache-spark intellij-idea

我是scala / spark的新手,正在加载大小为2GB的文件(csv),并且在我的虚拟机上(低于HEAP_SIZE)正常工作。

HEAP_SIZE="-Xms8g -Xmx8g"

但是,当运行相同的代码并在IntelliJ上加载相同的文件时,它将引发java.lang.StackOverflowError exception。 知道我没有在IntelliJ上正确设置内存选项。 有人可以帮我,因为我的Windows机器上有足够的内存(32GB),因此需要在什么地方进行设置?

通过跟踪错误,它完全来自以下代码,并且显然来自collect

val lst: Array[String] = expRDD.map((c: tmpClass) => (c.objType, 0))
  .reduceByKey((x: Int, y: Int) => 0)
  .map({ (t: Tuple2[String, Int]) => t._1 })
  .collect

3 个答案:

答案 0 :(得分:1)

增加堆栈大小可能会有所帮助。您可以在相应的“运行/调试”配置的 VM选项字段中指定-Xss4m。这会将堆栈大小设置为4M(默认堆栈大小取决于OS和JVM版本,通常小于1M)。请注意,如果您的问题是由无限递归引起的,那将无济于事。

答案 1 :(得分:0)

如果您正在使用Scala编译服务器,则JVM选项在此处:

构建,执行,部署>编译器> Scala编译器> Scala编译服务器

(您可能必须重新启动IntelliJ才能应用此功能)

IntelliJ JVM Options

信用额转到@CrazyCoder

答案 2 :(得分:0)

This soolved my issue

有时候最好增加堆大小,例如4096 和JVM选项-server -Xss256m