1

我面临一个问题,即 gridgain 似乎没有将条目驱逐到堆外,而只是将其丢弃。我的缓存配置是

 <bean id="test-cache" class="org.gridgain.grid.cache.GridCacheConfiguration">
    <property name="name" value="testCache"/>
     <property name="cacheMode" value="LOCAL" />
     <property name="memoryMode" value="ONHEAP_TIERED"/>
    <property name="swapEnabled" value="false"/>
    <property name="offHeapMaxMemory" value="#{1024 * 1024 * 1024 * 3}"/> 
    <property name="evictionPolicy">
        <!-- LRU eviction policy. -->
        <bean class="org.gridgain.grid.cache.eviction.lru.GridCacheLruEvictionPolicy">
            <property name="maxSize" value="40000"/>
        </bean>
    </property>
   </bean>

我开始在缓存中插入 100 万个条目,但在 put 操作结束时,我看到堆上的 40,000 个条目(使用 size())和堆外的 0 个条目(使用 offHeapEntriesCount())。我无法迭代任何堆外的东西,或者表明其他东西被丢弃了。我希望能在堆外存储中找到。

4

2 回答 2

1

我弄清楚了这个问题。它实际上是 3GB 的分配,但 spring 表达式将其视为整数并违反了最大整数值,导致分配大小为负。它得到了修复

<property name="offHeapMaxMemory" value="#{1024L * 1024L * 1024L * 3L}"/>
于 2014-06-26T03:47:53.873 回答
1

乍一看,offHeapMaxMemory是以字节为单位的实际内存大小,因此您只分配了 3MB 的堆外内存,这非常小。

尝试设置offHeapMaxMemory为零 (0),这意味着没有限制,并查看您是否获得了预期的行为。

于 2014-06-25T14:44:38.850 回答