2017-05-08 54 views
2

運行一個大搖籃建立(與JDK7)我收到兩個OutOfMemoryErrors設置JAVA_OPTS和JAVA_TOOL_OPTIONS在搖籃

Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main" 
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "Test worker" 

當我設置下面的兩個環境變量,構建貫穿而工作得很好:

export JAVA_OPTS="-Xmx2048m -XX:MaxPermSize=1024m" 
export JAVA_TOOL_OPTIONS="-Xmx1024m -XX:MaxPermSize=1024m -Xms768m" 
./gradlew test --stacktrace 
... 
Picked up JAVA_TOOL_OPTIONS: -Xmx1024m -XX:MaxPermSize=1024m -Xms768m 
... 

有沒有辦法將這些設置包含在gradle.propertiesbuild.gradle?如果是,那麼正確的用法是什麼?

我已經在build.gradle嘗試這樣:

allprojects { 
    System.setProperty('JAVA_OPTS', "-Xmx2048m -XX:MaxPermSize=1024m") 
    System.setProperty('JAVA_TOOL_OPTIONS', "-Xmx1024m -XX:MaxPermSize=1024m -Xms768m") 
} 

,但不起作用。

+0

您是否發現我的答案有用? – Opal

回答

0

可否請你嘗試創建一個gradle.properties文件,該文件應位於毗鄰根build.gradle和將它具有以下內容:

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=1024m 

另一種選擇是通過compileJava任務設置所需的選項,請參考herehere

不幸的是不知道如何設置JAVA_TOOL_OPTIONS,它似乎不受支持。

+0

因此,解決方案是不支持'JAVA_TOOL_OPTIONS',需要手動設置每個CI/CD環境和開發人員的機器? – user3105453

+0

@ user3105453,很可能是的。 – Opal

+2

我相信'org.gradle.jvmargs'隻影響Gradle守護進程的內存配置,而不影響JVM。 – Gi0rgi0s

0

從我收集gradlew的意圖是調整。因此,在gradlew腳本中添加這些環境變量將是可以接受的,並且該設置將在所有CI環境中可用。