Tomcat Java Heap Size Linux

*Below I tested using Tomcat 9 running on RHEL 8 so there may be differences with earlier versions or combinations.

The Java Heap size is the memory available for applications to consume. By default, Tomcat doesn’t explicitly set heap memory limits. It relies on the JVM’s default behavior.

use below to find:

java -XX:+PrintFlagsFinal -version | grep HeapSize

Tomcat uses the below parameters to override defaults
-Xms: Initial heap size
-Xmx: maximum heap size

Use m or M to indicate megabytes with no spaces for value eg. Xms100m

This can be set in various places using variable CATALINA_OPTS
– <TOMCAT_HOME>/bin/setenv.sh (It may not exist so it needs to be created)
– <TOMCAT_HOME>/bin/catalina.sh
– /etc/default/tomcat*

How can I find TOMCAT_HOME, if Tomcat is running

ps -ef|grep catalina

The output should show “catalina.home=<path>”

tomcat 1121 1 0 19:37 ? 00:00:19 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat9/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat9 -Dcatalina.home=/usr/local/tomcat9 -Djava.io.tmpdir=/usr/local/tomcat9/temp org.apache.catalina.startup.Bootstrap start
tomcat 5130 4701 0 22:44 pts/0 00:00:00 grep –color=auto catalina


possible check systemctl
– systemctl|grep -i tomcat
– use output above to check: systemctl status <service from above command>

Example Settings:
export CATALINA_OPTS=”-Xms1024m -Xmx2048m”

Need to bounce Tomcat to pickup new setting
– systemctl stop tomcat-> systemctl start tomcat, important to test a bounce as well as any incorrect setting or typo will stop tomcat starting.

Then if we run a ps command we should see the settings:

ps -ef|grep catalina

tomcat 5340 1 24 22:50 ? 00:00:03 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat9/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Xms1024m -Xmx2048m -Dignore.endorsed.dirs= -classpath /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat9 -Dcatalina.home=/usr/local/tomcat9 -Djava.io.tmpdir=/usr/local/tomcat9/temp org.apache.catalina.startup.Bootstrap start