5

I have an Ubuntu server 12.04 using a reverse proxy so that tomcat runs on top of apache. And I have a confluence instance on that machine, and a ticket system. So nothing special.

Memory is 8GB that's more than enough for this use.

From time to time, and in the last few days more often my confluence page crashes.

The log (confluence\logs\catalina.2014-05-06) shows this :

SEVERE: Socket accept failed
java.lang.OutOfMemoryError: Java heap space

So how can I avoid this? How can I give that process more memory.

4
  • 1
    If I get your setup correctly, your confluence installation is running on tomcat. The option to change memory available to java as documented in man java is "-Xmxn", where "n" should be replaced by a number. In order to put a limit of 100 MB for Javas memory allocator, you'd set it to "-Xmx100m". This has to be set in the options for tomcat - see: stackoverflow.com/questions/7738794/add-jvm-options-in-tomcat
    – soulsource
    May 6, 2014 at 11:00
  • That is the tomcat logs? May 6, 2014 at 11:08
  • yes its running on tomcat, but using the reverse proxy. this is a common setup documented in the confluence installation guide. How do i see the actual memmory available for java? thx
    – Private
    May 6, 2014 at 11:27
  • Can you tell me where i can set the parameters? I coudlnt find the right spot in catalina.sh , am I wrong there?
    – Private
    May 6, 2014 at 12:35

4 Answers 4

8

In my system I have edited the file

/etc/init.d/tomcat 

with these rows

HEAP="-Xms2048m -Xmx2048m" 
export JAVA_OPTS="$HEAP"

After restart tomcat you can see in the status section the memory allocated

2
  • 5
    On 14.04, with tomcat7 installed from the repositories, you should edit /etc/default/tomcat7.
    – Matt South
    Oct 1, 2015 at 13:58
  • 1
    For Ubuntu 15.04 and tomcat8 installed from the repositories, edit /etc/default/tomcat8. Nov 18, 2015 at 21:12
3

You can also do it in tomcat/bin/setenv.sh file and restart tomcat:

export JAVA_OPTS="-Xms512m -Xmx1024m"
1

The reason for the error is due to the way Java allocates memory. Your applications are allowed to use only limited amount of memory. This limit is specified during the application startup.

Allowed maximal size is set during the JVM launch by specifying JVM parameters such as -Xmx. If you do not explicitly set the sizes, platform-specific defaults will be used.

So – the “java.lang.OutOfMemoryError: Java heap space” error will be triggered when you try to add more data into the heap space area in memory, but the size of this data is larger than the JVM can accommodate in the Java heap space.

So the obvious way is to increase (or add if missing) the maximal possible heap size specified via -Xmx parameter. But in many cases you are just hiding symptoms instead of solving the underlying problem. To see the full explanation of the java.lang.OutOfMemoryError: Java heap space error, check out the Plumbr performance tuning site.

0

the answers didn't work for me, tried that and it worked :

export _JAVA_OPTIONS=-Xmx4096m

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .