How can I configure the heap size when starting a Spring Boot application with embedded Tomcat?

If starting the application with the spring-boot plugin:

mvn spring-boot:run -Drun.jvmArguments="-Xmx512m" -Drun.profiles=dev

Otherwise if running java -jar:

java -Xmx512m -Dspring.profiles.active=dev -jar app.jar

Since this is specifically a Spring Boot question, I'd argue that a more useful answer than @DaveSyer's is this:

You can drop a .conf file in the same directory as your WAR file that is effectively a shell script.

For example,

$ ls
myapp.conf
myapp.war
$ cat myapp.conf
export JAVA_OPTS="-Xmx1024m -Xms256m"

Any configuration you do there will be run before the Spring Boot embedded Tomcat starts up. Personally, I version control a .conf.example file in my application itself and then drop a copy of it on each server I deploy to.

Of course, anything you set in that .conf file is overridable with command-line operations.


Just use whatever normal mechanism you would to set up the JVM. Documentation is available on the command line:

$ java -X
...
-Xms<size>        Set initial Java heap size
-Xmx<size>        Set maximum Java heap size
...