【问题标题】:Guava maximumSize or maximumWeight for limiting cache memory sizeGuava maximumSize 或 maximumWeight 用于限制缓存大小
【发布时间】:2017-02-21 09:58:08
【问题描述】:

我试图弄清楚你在 Guava CacheBuilder maximumSize() 和 maximumweight(),weigher 中指定的数字代表什么。

假设我的代码中有这样的东西,

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

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

或者这 1000 是否意味着,我有一个 1000mb(MB 是否正确?)可以使用,并且我可以在缓存中拥有尽可能多的对象,直到 1000mb 才开始踢出 LRU?

那么maximumweight到底是什么?

如果提供了一些良好的配置来限制 500MB 的 Guava 缓存内存,我们将不胜感激。

【问题讨论】:

  • 在 Java 中测量任何类型的内存消耗都非常困难(并且可能很慢)。缓存不努力。

标签: java spring caching guava


【解决方案1】:

文档说maximumSize(long)

指定缓存可以包含的最大条目数。

使用maximumWeight(long) 和自定义Weigher 应该可以指定500MB,因为

输入权重没有单位;相反,它们只是相对于彼此。

【讨论】:

    猜你喜欢
    • 2017-02-27
    • 1970-01-01
    • 2019-07-28
    • 2013-04-01
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    相关资源
    最近更新 更多