Setting JAVA_OPTS and JAVA_TOOL_OPTIONS in Gradle

user3105453 picture user3105453 · May 8, 2017 · Viewed 11k times · Source

Running a large Gradle build (with JDK7) I receive two OutOfMemoryErrors:

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

When I set the two environment variables below, the build runs through and works just fine:

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
...

Is there a way to include those settings in gradle.properties or in build.gradle? If yes, what is the correct usage?

I already tried this in build.gradle:

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

but that doesn't work.

Answer

Opal picture Opal · May 8, 2017

Could you please try to create a gradle.properties file which should be located next to root build.gradle and will it with the following content:

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

Another option is to set the required options via compileJava task, please see here and here.

Unfortunately no idea how JAVA_TOOL_OPTIONS can be set, it seems unsupported.