- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想弄清楚您在 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/
这个问题已经有答案了: Spark 1.5.1, Cassandra Connector 1.5.0-M2, Cassandra 2.1, Scala 2.10, NoSuchMethodError
有人可以向我解释如何正确使用 Guava CacheBuilder。 如果数据不可访问,getFromNetwork() 应该引发异常还是返回 null?我应该引发执行异常并使用 guavaCache
从我的应用程序日志中,我觉得在缓存键过期后没有立即调用removeListener。这会在下面的场景中产生问题 缓存配置: SimpleCacheManager simpleCacheManager
我正在尝试创建一个简单的缓存,可以在其中存储 map 中的一些数据元素。我需要将这些数据保留大约 16 小时左右,之后我可以让旧项目过期。我正在实例化我的 LoadingCache: cache =
嗨,我是谷歌 Guava 集合的新手,所以我需要会过期一段时间的集合。所以我编写了以下代码,但它不会在过期时间后删除数据。任何人都可以告诉我代码的问题是什么。 Cache cache = CacheB
我想弄清楚您在 Guava CacheBuilder maximumSize() 中指定的数字代表什么。 假设我的代码中有这样的东西, Cache programCache = CacheBuilde
我想用 Guava CacheBuilder ,但无法找到任何明确的示例来实现这一点。 文档说明了以下代码: LoadingCache graphs = CacheBuilder.newBuilder
请告诉我哪里遗漏了什么。 我在 DataPool 中有一个由 CacheBuilder 构建的缓存。 DataPool 是一个单例对象,各种线程都可以获取其实例并对其进行操作。现在我有一个线程生成数据
我想要:当实体因超时到期而被移除时收到通知。 我尝试过: 设置删除监听器。 问题: 删除监听器似乎无法正常工作。它仅在我将新项目放入缓存时起作用(请参见下面的代码) 问题: 如何在不放置新项目的情况下
我正在尝试使用 Stash 插件的代码片段,但编译器一直给我一个我似乎无法解决的错误。它使用 com.google.common.cache.Cache (Guava) static final R
我已经创建了一个 Guava(一个包含有用的东西的库,几乎可以在任何 Java 项目中使用,包括用于不可变集合、函数式编程、I/O 等等的库)基于 CacheBuilder 的缓存 LoadingC
我目前在我的应用程序中使用 ConcurrentHashMap,但我需要添加在超时期限后有效地使条目过期的功能 (expireAfterWrite),并在删除条目时通知删除监听器。 我看到 Cache
Guava CacheBuilder 只使用一个 JVM。我想使用 CacheBuilder 接口(interface)从 redis 加载数据,然后 redis 依次从 MySQL 加载数据。 我该
我想使用这里推荐的 CacheBuilder: Java time-based map/cache with expiring keys 但是我不明白什么时候 Guava 知道条目会过期。 Guava
我想知道目前是否有一种方法可以使用 Guava MapMaker 或将使用 CacheBuilder 来提供计算缓存是否在最大大小范围内的函数? 看起来目前的驱逐只是基于缓存中的元素数量与 .maxi
我需要获取慢速方法的结果slowResult()对于类 Something 的实例。单独缓存并没有什么帮助,因为实例几乎不会重复。幸运的是,我知道结果实际上只取决于一些容易获得的Attributes的
我有一个方法可以提取大量数据。由于数据集很大且所需的计算量很大,这可能会花费相当多的时间。执行此调用的方法将被多次使用。结果列表每次都应返回相同的结果。话虽如此,我想缓存结果,所以我只需要做一次计算。
我尝试使用 MapMaker/CacheBuilder 制作缓存,但我不明白如何正确处理空值。 ConcurrentMap graphs = new MapMaker() .concu
从昨天开始尝试上传我的应用程序的新版本(仅更改了客户端代码),出现以下异常(应用程序 ID 为“riparautonline-hrd”): Uncaught exception from servle
我不习惯处理 Java 中的软引用和弱引用,但我理解其中的原理,因为我习惯处理像 Gemfire 这样的数据网格,它在内存已满时提供溢出到硬盘功能,可能使用软引用或我猜是类似的东西。 我在 Guava
我是一名优秀的程序员,十分优秀!