ehcache 2.8.5 似乎最多拥有 100 万个条目

ehcache 2.8.5 seems hold 1 million entries at most

最近,我们打开了生产服务器的ehcache jmx接口,并开始了持续监控。

监控的时候,发现一个小对象的缓存好像有上限,好像是100万。

这是监控图,有上限。图的y轴是缓存中的ObjectCount,是通过ehcache jmx接口获取的。

graph ehcache object count

我们的缓存设置是这样的:

<cache name="prodStockApiEhCache" maxBytesLocalHeap="200M" overflowToDisk="false" eternal="false" timeToIdleSeconds="240" timeToLiveSeconds="360" memoryStoreEvictionPolicy="LRU" />

缓存管理器级别没有指定的配置。

我们缓存的 class 就像:

public class ProductStock {

    private long productId;

    private int productCount;

    private int pickingCount;

    private int lackType;

    private int areaSale;

    //getter and setter....
}

我们研究了ehcache的对象大小估计方法,它使用google的sizeof-agent.jar.

我们使用 sizeof-agent.jar 进行测试。我们 class 的实例堆大小约为 40 字节。 100万乘以40M,比我们配置的200M少很多

另外,我们搜索了ehcache(2.8.5)的源码,也没有发现100万的限制。另外,我们在eclipse调试模式下检查了我们的ehcachemanager实例的配置,maxEntriesOnHeap为0,这意味着没有限制。

这是有线的,有没有我们遗漏的信息?监控图的内涵对吗?

据我所知,没有 1 000 000 个条目的限制。你能提供完整的ehcache.xml吗?

您看过 JMX 统计数据了吗?有驱逐吗?