Spring Boot Web アプリケーション内で Ignite エンジンを Bean として使用しています。キャッシュ構成は次のとおりです。
<bean id="ignite" class="org.apache.ignite.IgniteSpringBean">
<property name="configuration">
<bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="cacheConfiguration">
<list>
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="atomicityMode" value="TRANSACTIONAL" />
<property name="cacheMode" value="PARTITIONED" />
<property name="backups" value="0" />
<property name="startSize" value="#{1024*16}" />
<property name="memoryMode" value="OFFHEAP_TIERED" />
<property name="offHeapMaxMemory" value="#{1 * 1024L * 1024L * 1024L}" />
<property name="swapEnabled" value="true" />
<property name="evictSynchronized" value="true" />
</bean>
</list>
</property>
<property name="swapSpaceSpi">
<bean class="org.apache.ignite.spi.swapspace.file.FileSwapSpaceSpi">
<property name="baseDirectory" value="..." />
</bean>
</property>
0.5GB ヒープでエンジンを起動した後のデフォルトのメモリ使用量は次のとおりです。
この時点で、オフヒープの最大メモリを 1 GB に設定したため、最大メモリ使用量は 2.6 GB になると予想しています。しかし、数百万個のオブジェクトをキャッシュにロードすると、次のようになります。
さらに悪いことに、キャッシュを破棄しましたが、メモリ使用量はまだ残っています!
この時点で、さらに多くのエントリをキャッシュにロードしようとすると、メモリ使用量が増加し続け、以前に破棄したキャッシュが ignite によって解放されていないことがわかります。
編集
出力とともに Maven テスト プロジェクトをhttp://sourceforge.net/projects/ignitetest35087485/files/にアップロードしました。ご覧のとおり、ロードと破棄を 5 サイクル繰り返した後、メモリが枯渇しました。スペースをスワップするためのエビクションは行われず、ignite は offHeapMaxMemory 設定を考慮しませんでした。
ここで何が問題なのですか?どんな助けでも大歓迎です。