gpt4 book ai didi

java - Guava CacheBuilder 最大尺寸

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:24:56 24 4
gpt4 key购买 nike

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

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

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

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

或者 1000 是否意味着,我有 1000mb(MB 正确吗?)可以使用,并且在它开始踢出 LRU 之前,我可以在缓存中拥有尽可能多的对象,最多 1000mb?

最佳答案

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

如果您有衡量缓存特定对象的相对“成本”的方法,您可以指定 maximumWeight()反而。例如,如果您正在缓存 byte[] 实例,您可以使用它们的长度作为权重,这将粗略地反射(reflect)它们的内存占用。对于其他类型,您需要确定适当的“成本”代理概念。

关于java - Guava CacheBuilder 最大尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32321836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com