Configuring the Java Heap

Insufficient Java heap space is the most common cause of the out-of-memory issue. To avoid this issue, heap space settings should be configured using Xmx (Maximum heap size) and Xms (Initial heap size) parameters.

Starting the JVM with a higher heap size will reserve more memory for Tomcat to use. As a result, the JVM wont need to invoke the garbage collection as often and the server will use a higher percent of its CPU time to serving requests for Dekho and ArcGIS for Server.

With Tomcat 7 running as a Windows Service, this is easily configurable via the Tomcat properties GUI, as shown in figure 9.

Figure 10 - Setting the -Xms (inital memory pool) and -Xmx (Max memory pool) for defining the heap size.

The value specified depends on the complexity of the environment, number of users, workflows in Dekho, server infrastructure and what other applications are being used on the same server.

In our typical deployment (see figure 1) 8GB RAM is available and the machine is co-shared with ArcGIS for Server.

For medium sized deployments with around 200 concurrent users accessing Dekho through typical workflows (selections, queries, reporting, etc), a good starting point will be to increase the initial memory pool to 1GB, and the max to 2GB. Ideally this should be verified prior to deployment to production, with optimum memory settings established in a test environment using load simulated by tools (like JMeter).


Configuring the Java Permanent Generation (Permgen)