Search code examples
gradlememory-managementjvmgradlew

Run application via gradlew with -Xmx and -Xms


I have an application. I run it via

gradlew run-app

Or debug

gradlew debug-app

It works. How do I pass '-Xmx' argument into the application which I run (debug)? Is it possible to do so without edditing build.gradle file?

I found this Gradle unknown command-line option '-X'

I get a similar error when I try

gradlew debug-app -Xmx2000m

Error

FAILURE: Build failed with an exception.

* What went wrong:
Problem configuring task :debug-app from command line.
> Unknown command-line option '-X'.

I tried to create a file gradle.properties in GRADLE_USER_HOME directory (by default, it is USER_HOME/.gradle).

org.gradle.jvmargs=-XX\:MaxHeapSize\=4256m -Xmx4256m -Xms2000m

I also tried to org.gradle.jvmargs=-Xmx2000m in project folder gradle.properties.

And even then when I run an application, I see Commited Memory size is < 520 MiB

enter image description here

And this is when I run it as a normal Java App

enter image description here

In the second case, when I run the application as a normal Java app with -Xms, -Xmx, Commited Memory size is about 3.5 GiB because I passed -Xmx4512m -Xms2512m parameters.


Solution

  • Add this in your gradle.properties file :

    org.gradle.jvmargs=-Xmx2000m
    

    From here

    org.gradle.jvmargs

    Specifies the jvmargs used for the daemon process. The setting is particularly useful for tweaking memory settings. At the moment the default settings are pretty generous with regards to memory.

    edit : my answer what about the gradle daemon jvm, not the app jvm. You have to use the jvmArgs property

    The extra arguments to use to launch the JVM for the process. Does not include system properties and the minimum/maximum heap size.