This page last changed on Jul 02, 2007 by ivan@atlassian.com.

I am getting Out of Memory errors, how can I allocate more memory to tomcat?

Since the default memory setting usually is around 64 or 128MB (256MB in Confluence 2.2 and later), you might have to adjust the settings to run a bigger Confluence instance with sufficent memory. Users running Confluence as a service please refer to the Start Confluence automatically on Windows as a Service page. For users running Tomcat standalone, you will have to change the following settings:

Confluence 2.2 or later (Tomcat 5.5)

Do not set your memory using CATALINA_OPTS this is overridden by JAVA_OPTS.

On Linux

  • In the unpacked Confluence standalone directory, edit the file bin/setenv.sh
  • Edit the line beginning with JAVA_OPTS= substituting new values for -Xms (starting memory) and -Xmx (maximum memory)
  • Leave the rest of the options in that line unchanged

An example of a minimal setting for a large system - max heap size is set to 1Gb :

JAVA_OPTS="-Xmx1024m $JAVA_OPTS -Djava.awt.headless=true "

On Windows

  • In the unpacked Confluence standalone directory, edit the file bin/setenv.bat
  • Edit the line beginning with set JAVA_OPTS= substituting new values for -Xms (starting memory) and -Xmx (maximum memory)
  • Leave the rest of the options in that line unchanged

Confluence 2.1 and earlier (Tomcat 4.0)

On Linux
Edit the file $TOMCAT_HOME/bin/ startup.sh and insert the following line, substituting for the desired value, eg. Bash Shell:
export CATALINA_OPTS="-Xms(min heap)m -Xmx(max heap)m"

The line you add should go just before the line starting exec "$PRGDIR...

On Windows
Edit the file $TOMCAT_HOME\bin\ startup.bat and insert or alter the following line, substituting for the desired values:
set CATALINA_OPTS=-Xms(min heap)m -Xmx(max heap)m

For example if you want to allocate a minimum heap size of 256MB and a max heap size of 512MB you will have to write the following on Windows:
set CATALINA_OPTS=-Xms256m -Xmx512m

The line you add should go just before the line starting call "%EXECUTABLE%"...

If you are running tomcat 5.5 via tomcat.exe, you can update the heap size by running tomcatw.exe and setting the required values via the Java tab.

Other Notes

Allocating too much memory to your JVM Heap can also cause OutOfMemory Errors.

java.lang.OutOfMemoryError: unable to create new native thread

This error occurs when the operating system is unable to create new threads. This is due to the JVM Heap taking up the available RAM.

Big heaps take away from the space that can be allocated for the stack of a new thread

For Linux the maximum heap size of the JVM cannot be greater than 2GB. If you only have 2GB RAM in your server, it is not recommended to set the Max size of the JVM that high.
The size of the stack per thread can also contribute to this problem. The stack size can reduce the number of threads that can be created.

To fix this problem, you should reduce the size of your JVM Heap and also the size of the stack per thread.
The stack size can be changed with the following (example) parameter:

"-Xss512k"

Please refer to this guide as a reference for JVM tuning.

On OS X

If you are using the 'serveradmin start appserver' to start and stop tomcat, then you will need to update /usr/share/servermgrd/bundles/servermgr_appserver.bundle/Contents/Resources/run.sh

Permanent Generation Size

If you get the error message: java.lang.OutOfMemoryError: PermGen space this means that you have exceeded Java's fixed 64Mb block for loading class files. You will need to add the argument -XX:MaxPermSize=128m to CATALINA_OPTS, in addition to any argument you use to set the heap size.

Please refer to this link for more information.

JDK 1.4 does not provide information why the OutOfMemory error occurred.
JDK 1.5 is recommended as it provides description of the error as in the above example.
JDK 1.6 is not yet officially supported and thus not recommended to use.

RELATED TOPICS

Managing Application Server Memory Settings
Application Server Configuration
FAQ Home
Tomcat JVM options and Modify the Default JVM Settings
Logging A Thread Dump

Document generated by Confluence on Oct 10, 2007 18:49