运行大型 Gradle 构建(使用 JDK7),我收到两个OutOfMemoryErrors
:
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.properties
或build.gradle
中?如果是,正确的用法是什么?
我已经在build.gradle
中尝试过这个:
allprojects {
System.setProperty('JAVA_OPTS', "-Xmx2048m -XX:MaxPermSize=1024m")
System.setProperty('JAVA_TOOL_OPTIONS', "-Xmx1024m -XX:MaxPermSize=1024m -Xms768m")
}
但这行不通。
您能否尝试创建一个gradle.properties
文件,该文件应位于根build.gradle
旁边,并将包含以下内容:
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=1024m
另一种选择是通过compileJava
任务设置所需的选项,请参阅此处和此处。
不幸的是,不知道如何设置JAVA_TOOL_OPTIONS
,它似乎不受支持。
据我所知,gradlew 旨在进行调整。因此,在 gradlew 脚本中添加这些环境变量是可以接受的,并且该设置在所有 CI 环境中都可用。