2016-03-02 51 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'構建一個項目,其默認值爲我在答案中顯示的項目),但這不是一個簡單的自定義... –