1

EhCache 版本:2.8.4
JVM 版本:11.0.7

缓存配置:

<ehcache>
    <cache
        name="myCache"
        maxBytesLocalHeap="100m"
        eternal="true"
        overflowToOffHeap="false"
        overflowToDisk="true"
        diskPersistent="false"
        maxEntriesLocalDisk="2000000"
    />
</ehcache>

我注意到当使用溢出到磁盘的缓存时(如在上面的配置中),内存中有一个 DiskStore 对象似乎无限增长。我认为限制磁盘使用的条目数量maxEntriesLocalDisk可能会阻止这种情况发生,但它似乎没有帮助。

最近我从我的应用程序中查看了一个堆转储,我可以看到 DiskStore 引用了超过 17M 的缓存键,尽管maxEntiresLocalDisk值设置为 2M。这消耗了超过 2.5GB 的内存,这并不理想,因为应用程序只分配了 4GB 的堆。

有没有办法限制 DiskStore 引用了多少缓存键以防止它变得如此之大?我正在考虑Cache.evictExpiredElements()制定某种时间表,看看是否有帮助,但希望maxEntriesLocalDisk能避免这样做。我实际上确定条目是否已过期,因此可能evictExpiredElements无济于事。

4

0 回答 0