Apache Tomcat is an open-source web server with a servlet container for running web Java applications. Developed and maintained by Apache Software Foundation, Tomcat is a very popular web container that is used by top companies in the world.

By default, the memory allocated to Tomcat is good enough for running a small application. As the application grows, the memory usage also increases. If you continue with the default Tomcat configuration, you might see frequent OutOfMemoryError exceptions due to low memory space. So it is very critical to allocate sufficient memory while running the application in a production environment.

To configure an appropriate heap memory and perm gen size, you have to create a file named setenv.sh in a Unix environment or setenv.bat in Windows. By default, this file is not included in Tomcat installation packages. You need to manually create for customizing default configuration

Unix Environment

For Unix machines, you should create a new script file called setenv.sh under $CATALINA_HOME/bin directory with the following contents:

Note: If you installed the Tomcat through apt package manager on your Unix machine, the default $CATALINA_HOME location is /usr/share/tomcat*.

setenv.sh

export JAVA_OPTS="-Dfile.encoding=UTF-8 -Xms256m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=1024m"

Save the file and then restart the Tomcat server for the changes to take effect. That's it. You are done with increasing the default heap memory and perm gen size.

Here is a brief introduction to the above terms:

  • -Xms — This is the initial and minimum Java heap size in megabytes. By default, there is no value specified for this field. The heap is basically the memory space which holds all the objects created by your application.
  • -Xmx — The maximum Java heap size in megabytes. By default, the maximum heap size value is 256 MB.
  • -XX:PermSize — This is the initial size for permanent generation (or perm gen). It is the place where Tomcat caches classes and other resources in the memory.
  • -XX:MaxPermSize — The maximum permanent generation size.

Windows Environment

Create a new script file called setenv.bat under $CATALINA_HOME/bin directory with the following contents:

setenv.bat

export JAVA_OPTS="-Dfile.encoding=UTF-8 -Xms256m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=1024m"

Once the file is created successfully, restart the Tomcat server for changes to take effect. That was all you need to do.

✌️ Like this article? Follow @attacomsian on Twitter. You can also follow me on LinkedIn and DEV. Buy me a coffee (cost $3)

Need help to start a new Spring Boot or MEAN stack project? I am available for contract work. Hire me to accomplish your business goals with engineering and design. Let’s talk about your project: hi@attacomsian.com.