Looking for document or technical article which explains the Memory Utilization of Java.exe when Elasticsearch is running on Windows server

During extensive testing of Elasticsearch's search functionality, we noticed that the memory utilization of java.exe spikes, causing overall system memory utilization to reach 100%. Despite this, no search failures were observed, and other server applications continued to operate normally.

Upon further investigation, we discovered that java.exe's sharable working set was notably high. A sharable working set indicates memory that can be shared with other processes as needed.

Based on our findings, we concluded that although java.exe consumes a significant amount of memory, a substantial portion of this memory is sharable, allowing other processes to utilize it effectively. As a result, Elasticsearch and the overall system remain stable even at full memory utilization.

We are seeking official documentation or technical articles that provide insights into the memory utilization patterns of java.exe when running Elasticsearch on a Windows server.

1 Like

Elasticsearch uses and controls the Java heap, which is fixed in size, as well as some additional off-heap memory. In addition to this Elasticsearch relies on the operating system page cache for caching frequently accessed files, which is vital for good performance. This is the memory I believe you are referring to. The page cache is managed by the operating system and can be released quickly if other processes require it. It is not managed by Elasticsearch, so you need to look at Windows documentation around configuration and usage of the page cache.