# OpenAM Administration Guide
Chapter 18. Tuning OpenAM

Sidebar | Prev | Up | Next

## 18.2. Java Virtual Machine Settings

This section gives some initial guidance on configuring the JVM for running OpenAM. These settings provide a strong foundation to the JVM before a more detailed garbage collection tuning exercise, or as best practice configuration for production.

Table 18.6. Heap Size Settings

JVM Parameters | Suggested Value | Description
--- | --- | ---
`-Xms` & `-Xmx` | At least 1024m (2048m with embedded OpenDJ), in production environments at least 2048m to 3072m. This setting depends on the available physical memory, and on whether a 32 or 64-bit JVM is used. | -
`-server` | - | Ensures the server JVM is used
`-XX:PermSize` & `-XX:MaxPermSize` | Set both to 256m | Controls the size of the permanent generation in the JVM
`-Dsun.net.client.defaultReadTimeout` | 60000 | Controls the read timeout in the Java HTTP client implementation This applies only to the Sun/Oracle HotSpot JVM.
`-Dsun.net.client.defaultConnectTimeout` | High setting: 30000 (30 seconds) | Controls the connect timeout in the Java HTTP client implementation When you have hundreds of incoming requests per second, reduce this value to avoid a huge connection queue. This applies only to the Sun/Oracle HotSpot JVM.

Table 18.7. Garbage Collection Settings

JVM Parameters | Suggested Value | Description
--- | --- | ---
`-verbose:gc` | - | Verbose garbage collection reporting
`-Xloggc:` | `$CATALINA_HOME/logs/gc.log` | Location of the verbose garbage collection log file
`-XX:+PrintClassHistogram` | - | Prints a heap histogram when a SIGTERM signal is received by the JVM
`-XX:+PrintGCDetails` | - | Prints detailed information about garbage collection
`-XX:+PrintGCTimeStamps` | - | Prints detailed garbage collection timings
`-XX:+HeapDumpOnOutOfMemoryError` | - | Out of Memory errors generate a heap dump automatically
`-XX:HeapDumpPath` | `$CATALINA_HOME/logs/heapdump.hprof` | Location of the heap dump
`-XX:+UseConcMarkSweepGC` | - | Use the concurrent mark sweep garbage collector
`-XX:+UseCMSCompactAtFullCollection` | - | Aggressive compaction at full collection
`-XX:+CMSClassUnloadingEnabled` | - | Allow class unloading during CMS sweeps