Apache Spark - 内存异常错误 - IntelliJ设置

6
当我尝试运行使用Apache Spark的测试时,遇到了以下异常:
    Exception encountered when invoking run on a nested suite - System memory 259522560 must be at least 4.718592E8. Please use a larger heap size.
java.lang.IllegalArgumentException: System memory 259522560 must be at least 4.718592E8. Please use a larger heap size.

我可以通过在配置文件中更改vm选项来解决错误,例如在-Xms128m -Xmx512m -XX:MaxPermSize=300m -ea中找到的选项。

http://apache-spark-user-list.1001560.n3.nabble.com/spark-1-6-Issue-td25893.html

但是,我不想为每个测试更改该设置,我希望它可以全局使用。尝试了各种选项后,我来到这里希望有人能够帮助。

我已经重新安装了 IDEA 15 并进行了更新。此外,我正在运行64位jdk,更新了JAVA_HOME并使用了idea64 exe。

我还更新了vmoptions文件,并更新了上面的值以包含在内,使其读取如下:

    -Xms3g
-Xmx3g
-XX:MaxPermSize=350m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow

我不太擅长理解选项,所以可能会出现冲突,但除此之外,我不知道还能做什么来使这个 %^$%^$&*ing 测试工作,而不是手动更新IDEA中的配置。

非常感谢任何帮助。

1个回答

6
在IntelliJ中,您可以为特定类型的(测试)配置创建一个默认配置,然后该类型的每个新配置都会自动继承这些设置。
例如,如果您希望将此应用于所有JUnit测试,请转到运行/调试配置-->选择默认值-->选择JUnit,并根据需要设置VM选项:

enter image description here

保存更改(通过应用或确定),然后,下次尝试运行JUnit测试时,它将自动具有这些设置:

enter image description here

注意:

  • 这可以应用于任何配置类型(例如ScalaTest等),当然不仅限于JUnit
  • 如果您已经有一些现有的配置,它们不会继承默认配置中的更改,因此您应该将它们删除并让IntelliJ重新创建它们(下次从测试类运行或按Ctrl + Shift + F10)

1
你很美丽,谢谢。除了使用vmoptions之类的IDE配置外,没有其他处理此类型问题的方法吗? - null
我不确定,但我认为虚拟机选项适用于运行IntelliJ本身的JVM,而不是它为测试生成的JVM(不确定)。顺便说一句 - 我经常使用Gradle的Idea插件(https://docs.gradle.org/current/userguide/idea_plugin.html)来管理我的IntelliJ项目文件,在那里您可以自定义项目文件以从一开始就包含这些设置(运行`gradle idea`会构建一个带有我在答案中显示的默认值的项目),但这不是一个简单的自定义... - Tzach Zohar

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