Ignite also doesn’t release the off heap memory it allocated.

On 12 Feb 2026, at 12:52, Stephen Darlington <[email protected]> wrote:


We should probably improve the documentation around this issue, as it's a common misunderstanding.

Simplifying slightly, Ignite has two kinds of memory: on-heap and off-heap. The memory you configured in XML is the off-heap memory. That's where Ignite stores your data. There's also the Java heap, which you can think of as its working set. I don't know the default in your environment.

You need to add the types together (and then add a bit) to find Ignite's total memory footprint.


On Thu, 12 Feb 2026 at 10:27, Charlin S <[email protected]> wrote:
Hi All,

I've encountered an issue where memory usage is spiking on the Ignite server, and the memory is not being released back to the OS. I am hosting three grids on this server: two use replication cache mode with no expiry policy, and the third uses partition cache mode with an expiry policy.

This issue first appeared with Amazon Linux 2023.9.20251027 and `openjdk version "1.8.0_402-402"`. We subsequently upgraded to Java 17, focusing on the primary JVM options designed to encourage the release of unused heap memory to the operating system. We start Ignite using `ignite.sh config/grid1.xml`.
Please suggest ways to finetune the configuration for better memory management.

The current upgraded version details are:

```
openjdk version "17.0.17" 2025-10-21 LTS
OpenJDK Runtime Environment Microsoft-12574440 (build 17.0.17+10-LTS)
OpenJDK 64-Bit Server VM Microsoft-12574440 (build 17.0.17+10-LTS, mixed mode, sharing)


```

Observations:

* One Ignite grid (partition mode, 2-cluster) uses 19GB of memory, but its data region is only 18GB.
* Another grid (replication mode, 2-cluster) uses 21GB of memory, but its data region is only 10GB.



bean xml file
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/util
                           http://www.springframework.org/schema/util/spring-util.xsd">
  <bean class="org.apache.ignite.configuration.IgniteConfiguration">
    <property name="clientMode" value="false"/>
    <property name="clientFailureDetectionTimeout" value="120000"/>
    <property name="igniteInstanceName" value="Productiongrid"/>
    <property name="longQueryWarningTimeout" value="4000"/>
    <property name="failureDetectionTimeout" value="120000"/>
    <property name="segmentationPolicy" value="RESTART_JVM"/>
    <property name="segmentCheckFrequency" value="20000"/>
    <property name="segmentationResolveAttempts" value="10"/>
    <property name="discoverySpi">
      <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
        <property name="localPort" value="55500"/>
        <property name="ipFinder">
          <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
            <property name="addresses">
              <list>
                        <value>IP:55500</value>
                        <value>IP:55500</value>
              </list>
            </property>
          </bean>
        </property>
      </bean>
    </property>
        <property name="dataStorageConfiguration">
            <bean class="org.apache.ignite.configuration.DataStorageConfiguration">
                <property name="defaultDataRegionConfiguration">
                    <bean class="org.apache.ignite.configuration.DataRegionConfiguration">
                        <property name="name" value="Dynamic_Data_Region"/>
                        <property name="initialSize" value="#{1L * 1024 * 1024 * 1024}"/>
                        <property name="maxSize" value="#{18L * 1024 * 1024 * 1024}"/>
                        <property name="pageEvictionMode" value="RANDOM_2_LRU"/>
                        <property name="evictionThreshold" value="0.7"/>
                        <property name="emptyPagesPoolSize" value="65536"/>
                    </bean>
                </property>
            </bean>
        </property>
        <property name="communicationSpi">
        <bean class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi">
            <property name="sharedMemoryPort" value="-1"/>
            <property name="localPort" value="55605"/>
        </bean>
    </property>
  </bean>
</beans>

Thanks & Regards,
Charlin

Reply via email to