2016-03-02 86 views
4

当我尝试和运行使用Apache的火花我会遇到以下异常测试:阿帕奇星火 - 内存异常错误-IntelliJ设置

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 otions环游的错误,以便它具有:-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 

我不是伟大的理解中的选项所以有可能可能是一个冲突,但除此之外 - 我不知道我还能做什么来做这个测试工作,而无需手动更新IDEA中的congif。

任何帮助表示感谢,谢谢。

回答

3

在IntelliJ中,您可以为特定类型的(测试)配置创建默认配置,那么每种新类型的配置都会自动继承这些设置。

例如,如果你想这是适用于所有的JUnit测试,去运行/调试配置 - >选择默认 - >选择的JUnit,并设置VM选项,只要你喜欢:

enter image description here

保存更改(通过应用或确定),然后,您尝试运行JUnit测试之后,接下来的时间,它会自动有这些设置:

enter image description here

NOTES:

  • 这可以被应用到任何结构类型(例如ScalaTest等),当然不是JUnit专门的
  • 如果你已经有一些现有的配置,它们不会继承默认配置的变化,所以你应该删除它们并让IntelliJ重新创建它们(下次你点击Run或Ctrl + Shift + F10从测试类)
+0

你很漂亮,谢谢。在IDE配置之外是否没有办法处理这种类型的问题 - 例如使用vmoptions? – null

+0

我不确定,但我不这么认为 - 我认为虚拟机选项适用于运行_IntteliJ本身的JVM,而不是它为测试产生的JVM(不确定)。顺便说一句 - 我经常使用Gradle的想法插件管理我的IntelliJ项目文件(https://docs.gradle.org/current/userguide/idea_plugin。html),您可以在其中自定义项目文件以包含这些设置(运行'gradle idea'构建一个项目,其默认值为我在答案中显示的项目),但这不是一个简单的自定义... –