Guava CacheBuilder maximumSize

时间:2015-09-01 00:29:37

标签: java caching size max guava

我想弄清楚你在Guava CacheBuilder maximumSize()中指定的数字是什么。

说我的代码中有这样的东西,

Cache<String, Object> programCache = CacheBuilder.newBuilder()
    .maximumSize(1000)
    .build();

我指定为最大大小的1000是否意味着在开始踢出LRU之前我可以在缓存中有一千个不同的条目(无论对象的大小是多少)?如果是这种情况,对象的大小是否有限制?

或者1000意味着,我有一个1000mb(MB是正确的吗?)可以使用,我可以拥有尽可能多的高速缓存中的对象,因为我想要在开始踢出LRU之前达到1000mb? / p>

1 个答案:

答案 0 :(得分:3)

maximumSize()方法是指缓存中条目的(近似)最大数量。它不能保证缓存的内容将占用多少内存(正如路易斯指出的那样,任何Java对象都没有合理的方法这样做)。

如果你有办法衡量相对成本&#34;缓存特定对象时,您可以指定maximumWeight()。例如,如果您正在缓存byte[]实例,则可以使用它们的长度作为权重,这将大致反映其内存占用量。对于其他类型,您需要确定适当的代理概念&#34;费用&#34;。