How to Increase Tomcat Default Memory Size

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 me on Twitter and LinkedIn. You can also subscribe to RSS Feed.

You might also like...

Digital Ocean

The simplest cloud platform for developers & teams. Start with a $200 free credit.

Buy me a coffee ☕

If you enjoy reading my articles and want to help me out paying bills, please consider buying me a coffee ($5) or two ($10). I will be highly grateful to you ✌️

Enter the number of coffees below:

✨ Learn to build modern web applications using JavaScript and Spring Boot

I started this blog as a place to share everything I have learned in the last decade. I write about modern JavaScript, Node.js, Spring Boot, core Java, RESTful APIs, and all things web development.

The newsletter is sent every week and includes early access to clear, concise, and easy-to-follow tutorials, and other stuff I think you'd enjoy! No spam ever, unsubscribe at any time.