ehcache 2.8.5似乎最多可容纳100万个条目

时间:2017-10-13 07:14:21

标签: java caching ehcache

最近,我们打开了一个生产服务器的ehcache jmx界面,并开始连续监控。

监控时,我们发现一个小对象的缓存似乎有一个上限容量,就像100万。

这是监视器图表,具有上限金额。图表的y轴是缓存中的ObjectCount,它是通过ehcache jmx接口获得的。

graph ehcache object count

我们的缓存设置如下:

public class ProductStock {

    private long productId;

    private int productCount;

    private int pickingCount;

    private int lackType;

    private int areaSale;

    //getter and setter....
}

在cachemanager级别没有指定的配置。

我们的缓存类就像:

 public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt();
    int j = 0;
    int a[][] = new int[n][n];
    int count1 = 0; int count2 = 0;
    int result = 0;
    for(int a_i=0; a_i < n; a_i++){
        for(int a_j = 0;a_j < n;a_j++){

            a[a_i][j] = in.nextInt();

    }}
    for(int i = 0;i<n;i++)
    {
        count1+=a[i][j];
        System.out.println(count1);
        j++;
    }
    j = 0;
    for(int i = n-1;i>=0;i--)
    {
        count2+=a[i][j];
        System.out.println(count2);
        j++;
    }
    result = Math.abs(count1 - count2);
    System.out.println(result);
}

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

我们使用sizeof-agent.jar进行测试。我们类的实例堆大小约为40字节。如果我们超过100万,它就等于40M,远低于我们配置的200M。

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

这是有线的,我们错过了什么信息吗?是监控图的内涵吗?

1 个答案:

答案 0 :(得分:0)

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

你看过JMX的统计数据吗?有没有驱逐?