Java applications like JIRA, Crowd and Confluence run in a “Java virtual machine” (JVM), instead of directly within an operating system. When started, the Java virtual machine is allocated a certain amount of memory, which it makes available to applications like Confluence. By default, Java virtual machines are allocated 64Mb of memory, no matter how many gigabytes of memory your server may actually have available. 64Mb is inadequate for most Confluence installations, and so this needs to be increased.
Diagnosis
Determine type of error message
Look in the atlassian-confluence.log to see which type of OutOfMemory Error you’re receiving. There are three common messages:
In Confluence, go to Confluence Administration > System Information, and look at the memory graph during times of peak usage:
This server has been allocated a maximum of 650Mb and a minimum of 256m. You can see the minimum displayed here; if you’re trying to see whether your settings are being picked up, this is where to look.
Determine available system memory
On Windows
From the Close Programs Dialogue (Press ctrl-alt-delete), select the Performance tab: The amount marked Available is the amount in kilobytes you have free to allocate to Confluence. On this server we should allocate at most 214Mb.
On Linux
Run
1
cat/proc/meminfo
to view the memory usage.
Setting the -Xmx above the available amount on the server runs the risk of OutOfMemoryErrors due to lack of physical memory. If that occurs the system will use swap space, which greatly decreases performance.
We aren’t really able to give a concrete recommendation for the amount of memory to allocate, because that will depend greatly on your server setup, the size of your user base, and their behaviour. You will need to find a value that works for you, i.e. no noticeable GC pauses, and no OutOfMemory errors.
For reference, the 3 most common parameters used to change the memory (heap) allocation are:
Xms – the minimum size of the heap
Xmx – the maximum size of the heap
-XX:MaxPermSize – the maximum size of PermGen (this is not used in Java 8 and above)
In case you need an advice regarding how much memory you should use please check this page for some examples of hardware specifications.
If you do decide to increase the memory settings, there are a few general guidelines to follow.
Increase Xmx in small increments (eg 512mb at a time), until you no longer experience the OutOfMemory error. This is because increasing the heap beyond the capabilities of your server to adequately Garbage Collect can cause other problems (eg performance/freezing)
If your error is java.lang.OutOfMemoryError : PermGen space, increase the -XX:MaxPermSize parameter in 256mb increments until the error stops occurring.
If your error does not reference PermGen, there is no need to increase it. In a simplistic explanation, PermGen is used to store classes, and is generally quite static in size, and has been removed in Java 8. More info here.
Consider setting Xms and Xmx to the same value, as this can decrease the time GC takes to occur, as it will not attempt to resize the heap down on each collection. See our Garbage Collection (GC) Tuning Guide for more detailed information.
Linux
To increase heap or perm gen space memory in Linux installations,
Shutdown Confluence
From <confluence-install>/bin (Stand-alone) or <Tomcat-home>/bin(EAR-WAR installation), open setenv.sh (you can create this file in the EAR/WAR version).
Find the section
CATALINA_OPTS=”-Xms1024m -Xmx1024m -XX:+UseG1GC $CATALINA_OPTS”in Confluence 5.8 or above
CATALINA_OPTS=”$CATALINA_OPTS -Xms1024m -Xmx1024m -XX:MaxPermSize=256m -XX:+UseG1GC” in Confluence 5.6 or 5.7
JAVA_OPTS=”-Xms256m -Xmx512m -XX:MaxPermSize=256m in previous versions
See Diagnosis above and enter the appropriate values. Xmx is maximum, Xms is minimum, and MaxPermSize is PermGen.
Start Confluence
Windows (starting from .bat file)
If you start Confluence as a Service on Windows, then you should not use these instructions. Instead, refer to the “Windows Service” section below.
You should only follow these instructions if you are starting Confluence via the batch file. The batch file is not used when Confluence is started as a Service.
To Configure System Properties in Windows Installations When Starting from the .bat File,
Shutdown Confluence
From <confluence-install>/bin (Stand-alone) or <Tomcat-home>/bin(EAR-WAR installation), open setenv.bat.
Find the section
CATALINA_OPTS=”-Xms1024m -Xmx1024m -XX:+UseG1GC $CATALINA_OPTS” in Confluence 5.8 or above
CATALINA_OPTS=”$CATALINA_OPTS -Xms1024m -Xmx1024m -XX:MaxPermSize=256m -XX:+UseG1GC” in Confluence 5.6 or 5.7
JAVA_OPTS=”-Xms256m -Xmx512m -XX:MaxPermSize=256m in previous versions
See Diagnosis above and enter the appropriate values. Xmx is maximum, Xms is minimum, and MaxPermSize is PermGen.
Setting Properties for Windows Services via Command Line
Setting Properties for Windows Services via Command Line
Identify the name of the service that Confluence is installed as in Windows ( Control Panel > Administrative Tools > Services ): In the above example, the SERVICENAME is: JIRA030908110721 (this is a JIRA screenshot, but the same applies to Confluence)
Open the command window from Start >> Run >> type in 'cmd' >> Enter
cd to the bin directory of your Confluence instance, or the bin directory of your Tomcat installation if your are running Confluence EAR/WAR.
Run (for tomcat8, change as necessary for earlier versions):
1
2
tomcat8w//ES//<Your_Service_Name>
. If you are under confluence 5.5, it would be tomcat6w //ES//JIRA030908110721 instead of tomcat8w (this is a JIRA screenshot, but the same applies to Confluence)
Click on the Java tab to see the list of current start-up options:
Set the maximum memory allocation here
Also add -XX:MaxPermSize=512m to the java options section (if required).
Setting Properties for Windows Services via the Windows Registry
In some versions of Windows, there is no option to add Java variables to the service. In these cases, you must add the properties by viewing the option list in the registry.
To Set Properties for Windows Services via the Windows Registry,