EhCache中的元素大小

时间:2011-02-22 13:43:18

标签: ehcache

我设置了一个简单的缓存,使用密钥Integer和值Double。填充缓存后,比率cache.calculateInMemorySize() / cache.getMemoryStoreSize()恒定为每个元素344个字节。我期望开销,但我的有效载荷是(32 + 64)96位,或12字节,因此开销高达332字节 - 或者我完全误解了这是如何工作的?如果没有,我可以做些什么来降低开销?

缓存是一个仅限内存的存储。我们希望将所有东西都放在那里,因此不需要溢出和到期,并且因为我们可以从外部数据源中快速填充(只是不够快以将其用作主要数据源),所以也不需要持久性。 / p>

使用版本2.4.0。

2 个答案:

答案 0 :(得分:0)

我假设有效负载是实际缓存的东西。你还包括钥匙的大小吗?我相信calculateInMemorySize还包括键。

答案 1 :(得分:0)

根据您的要求:

  

缓存是一个仅限内存的存储。我们想要适应   那里的一切,所以不需要溢出和到期,就像我们一样   可以从外部数据源快速填充(只是没有   足够快以将其用作主要数据源),持久性不是   需要。

我的结论是,您根本不需要使用任何第三方缓存框架。相反,您可以使用简单的HashMap ...因为您的缓存元素永不过期并始终适合内存。此外,您不会在类路径中包含EhCache jar并加载其类!

以下是示例代码:

public class MyCustomCache
{
  private Map<Integer, Double> myMap = new HashMap<Integer, Double>();

  public Double getCachedValueByKey(Integer key)
  {
    return myMap.get(key);
  }

  public void putValue2Cache(Integer key, Double value)
  {
    myMap.put(key, value);
  }

  public Double removeValueFromCache(Integer key)
  {
    return myMap.remove(key);
  }
}