IntelliJ出现java.lang.StackOverflowError错误

3

我刚接触Scala/Spark,正在加载一份2GB大小的csv文件。在我的虚拟机上,使用以下HEAP_SIZE可以正常运行。

HEAP_SIZE="-Xms8g -Xmx8g"

但是当在IntelliJ上运行相同的代码并加载相同的文件时,会抛出java.lang.StackOverflowError异常。 我知道我没有正确设置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

你尝试过使用运行/调试配置中的VM选项字段来启动应用程序吗? - CrazyCoder
我的错,应该是java.lang.StackOverflowError。 是的,我尝试使用“编辑配置”,通过提供相同的堆大小来使用VM选项。 - Leibnitz
尝试在VM选项中添加“-Xss4m”。如果问题仍然存在,可能是由于某些无限递归引起的,您需要分享最小完整可验证示例以获得帮助。 - CrazyCoder
谢谢,这个方法可行。您能否将其作为答案解释一下,以便我可以接受它? - Leibnitz
3个回答

3

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


1
如果您正在使用Scala编译服务器,则JVM选项在此处:
构建、执行、部署 > 编译器 > Scala编译器 > Scala编译服务器
(您可能需要重新启动IntelliJ才能应用此操作)

IntelliJ JVM Options

感谢 @CrazyCoder


0

This soolved my issue

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接