You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by Charlin S <ch...@hotelhub.com> on 2026/02/12 10:26:16 UTC

Ignite server memory spiking up - Ignite 2.16 and Java 17

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

Re: Ignite server memory spiking up - Ignite 2.16 and Java 17

Posted by Stephen Darlington <sd...@apache.org>.
As Humphrey notes, you would not expect the memory to decrease. Memory gets
*reused* but not *released* back to the OS.

Here's a description of the difference between used and committed:
https://www.baeldung.com/java-heap-used-committed-max

Ultimately, you've configured Ignite to use up to a certain amount of
memory, and that's exactly what it's doing. Given the information you've
shared, your heap usage looks pretty healthy.


On Wed, 18 Feb 2026 at 15:30, Charlin S <ch...@hotelhub.com> wrote:

> Hi All,
> Thanks for your reply. The committed memory in my scenario increases from
> 1GB to 12GB but does not decrease.
>
> I have restarted grid 5 days ago and Java heap usage trends are :-
> [15:20:55,784] Heap [used=7659MB, free=51.57%, comm=12192MB]
> [15:19:55,776] Heap [used=5763MB, free=63.56%, comm=12192MB]
> [15:18:55,768] Heap [used=10505MB, free=33.58%, comm=12192MB]
> [15:17:55,762] Heap [used=4761MB, free=69.89%, comm=12192MB]
>
> Thanks & Regards,
> Charlin
>
>
> On Tue, 17 Feb 2026 at 14:33, Stephen Darlington <sd...@apache.org>
> wrote:
>
>> True, but that's the case with pretty much all software.
>>
>> On Sat, 14 Feb 2026 at 20:28, Humphrey <hm...@gmail.com> wrote:
>>
>>> Ignite also doesn’t release the off heap memory it allocated.
>>>
>>> On 12 Feb 2026, at 12:52, Stephen Darlington <sd...@apache.org>
>>> 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.
>>>
>>> See here for how to configure the heap memory:
>>> https://ignite.apache.org/docs/ignite2/latest/perf-and-troubleshooting/memory-tuning
>>>
>>> On Thu, 12 Feb 2026 at 10:27, Charlin S <ch...@hotelhub.com> 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
>>>>
>>>>

Re: Ignite server memory spiking up - Ignite 2.16 and Java 17

Posted by Charlin S <ch...@hotelhub.com>.
Hi All,
Thanks for your reply. The committed memory in my scenario increases from
1GB to 12GB but does not decrease.

I have restarted grid 5 days ago and Java heap usage trends are :-
[15:20:55,784] Heap [used=7659MB, free=51.57%, comm=12192MB]
[15:19:55,776] Heap [used=5763MB, free=63.56%, comm=12192MB]
[15:18:55,768] Heap [used=10505MB, free=33.58%, comm=12192MB]
[15:17:55,762] Heap [used=4761MB, free=69.89%, comm=12192MB]

Thanks & Regards,
Charlin


On Tue, 17 Feb 2026 at 14:33, Stephen Darlington <sd...@apache.org>
wrote:

> True, but that's the case with pretty much all software.
>
> On Sat, 14 Feb 2026 at 20:28, Humphrey <hm...@gmail.com> wrote:
>
>> Ignite also doesn’t release the off heap memory it allocated.
>>
>> On 12 Feb 2026, at 12:52, Stephen Darlington <sd...@apache.org>
>> 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.
>>
>> See here for how to configure the heap memory:
>> https://ignite.apache.org/docs/ignite2/latest/perf-and-troubleshooting/memory-tuning
>>
>> On Thu, 12 Feb 2026 at 10:27, Charlin S <ch...@hotelhub.com> 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
>>>
>>>

Re: Ignite server memory spiking up - Ignite 2.16 and Java 17

Posted by Stephen Darlington <sd...@apache.org>.
True, but that's the case with pretty much all software.

On Sat, 14 Feb 2026 at 20:28, Humphrey <hm...@gmail.com> wrote:

> Ignite also doesn’t release the off heap memory it allocated.
>
> On 12 Feb 2026, at 12:52, Stephen Darlington <sd...@apache.org>
> 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.
>
> See here for how to configure the heap memory:
> https://ignite.apache.org/docs/ignite2/latest/perf-and-troubleshooting/memory-tuning
>
> On Thu, 12 Feb 2026 at 10:27, Charlin S <ch...@hotelhub.com> 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
>>
>>

Re: Ignite server memory spiking up - Ignite 2.16 and Java 17

Posted by Humphrey <hm...@gmail.com>.
Ignite also doesn’t release the off heap memory it allocated.

  

> On 12 Feb 2026, at 12:52, Stephen Darlington <sd...@apache.org> 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.
>
>  
>
>
> See here for how to configure the heap memory:
> <https://ignite.apache.org/docs/ignite2/latest/perf-and-
> troubleshooting/memory-tuning>
>
>  
>
>
> On Thu, 12 Feb 2026 at 10:27, Charlin S
> <[charlin.s@hotelhub.com](mailto:charlin.s@hotelhub.com)> 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

>>

>>  
>


Re: Ignite server memory spiking up - Ignite 2.16 and Java 17

Posted by Stephen Darlington <sd...@apache.org>.
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.

See here for how to configure the heap memory:
https://ignite.apache.org/docs/ignite2/latest/perf-and-troubleshooting/memory-tuning

On Thu, 12 Feb 2026 at 10:27, Charlin S <ch...@hotelhub.com> 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
>
>