[[heap-size]] === Set JVM heap size with ES_HEAP_SIZE In development mode, Elasticsearch tells the JVM to use a heap with a minimum size of 256MB and a maximum size of 1GB. When moving to production, it is important to configure the `ES_HEAP_SIZE environment variable to ensure that Elasticsearch has enough heap available. Elasticsearch will assign the entire heap specified in `ES_HEAP_SIZE on startup. The value for this setting depends on the amount of RAM available on your server. A good rule of thumb is: * The more heap available to Elasticsearch, the more memory it can use for caching. * Set the `ES_HEAP_SIZE` to no more than 50% of your RAM, to ensure that there is enough RAM left for kernel file system caches. * Don’t set `ES_HEAP_SIZE` to more than about 31GB to ensure that the JVM uses compressed object pointers (compressed-oops). You can verify that you are under the limit by looking for a line in the logs like the following: heap size [1.9gb], compressed ordinary object pointers [true] Here are examples of how to set the ES_HEAP_SIZE: [source,sh] ------------------ ES_HEAP_SIZE=2g ./bin/elasticsearch <1> ES_HEAP_SIZE=4000m ./bin/elasticsearch <2> ------------------ <1> Set the min/max heap size to 2GB. <2> Set the min/max heap size to 4,000MB. When using the Debian or RPM package, ES_HEAP_SIZE can be configured in the <>.