What happens if the Enterprise Manager's heap settings are not set?

Document ID : KB000030358
Last Modified Date : 14/02/2018
Show Technical Document Details

Description:

This article describes the consequences if not setting the heap settings for the Enterprise Manager and leaving it out of the Java properties.

 

Solution:

Not specifying the Xms and Xmx settings in the Enterprise Manager can result in a performance issue.  The reason for this is you are allowing Java to determine how much memory to use for the EM.  

Once the EM is started, there is no way to dynamically add more heap to Java for the EM.  To change the heap settings, you need to stop, change and then restart the EM.

Java determines the default heap by Java version, OS memory, OS type and OS bitness.  So this varies from system to system.

 

To find out what the default heap your Java will use, go to the server and type the following command:

For Windows:

java -XX:+PrintFlagsFinal -version

 

For Unix/Linux, you can type the following:

java -XX:+PrintFlagsFinal -version | grep HeapSize

Look for the two properties:

InitialHeapSize (for -Xms)

MaxHeapSize   (for -Xmx)

 

On a Windows 2008 64 bit server with Java 1.7.0_71, the results were:

    uintx InitialHeapSize                          := 67084032        {product}

    uintx MaxHeapSize                            := 1073741824      {product}

 

As you can see, Java selected 67 MB for -Xms and 1GB for -Xmx.  This will severely limit the EM in terms of performance as the EM will not have enough heap to handle day to day operations as a MOM, Collector, Tim Collector or even a standalone EM.  The large gap between -Xms and -Xmx in this case will cause GC (Garbage Collection) to run more frequently, thus creating more overhead for the EM.

Therefore it is strongly recommended to set the -Xms and -Xmx higher to better serve the EM.  If on a 32 bit system, 1500MB is the highest you can go.  For a 64 bit system, Xmx should be set to what your system memory is minus 2 GB to 4 GB (for OS usage).

It is also recommended to set -Xms and -Xmx equal to each other. This will reduce the amount of time GC takes as Java does not have to reduce/increase heap for its needs.  This will result in increased performance.