gpt4 book ai didi

java - 谷歌公共(public)缓存 - maximumSize 的默认值(和其他 "optional"设置) - 想要一个使用所有 "available"内存的缓存

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:32:09 25 4
gpt4 key购买 nike

我刚找到 Guava通过搜索缓存 API(它非常适合我的需要)。但是在阅读 wiki 时出现了一个问题和 Javadoc - CacheBuilder 可以采用的默认设置值是什么? Javadoc指出“这些功能都是可选的”和“使用默认设置构造一个新的 CacheBuilder 实例,包括强键、强值,并且没有任何类型的自动驱逐。”

在我看来,maximumSize 的一个好的默认值是相对于 Runtime.getRuntime().freeMemory();

最后,我想要一个使用给定系统上可用内存的缓存。所以我需要一个驱逐策略,询问有多少 freeMemory() 可用(可能相对于 Runtime.getRuntime().maxMemory())

最佳答案

实际上,可用内存并不是缓存逐出的重要指标。原因是因为垃圾回收。可用内存用完可能只是意味着现在是垃圾收集器运行的时候了,之后您将突然拥有大量可用内存。因此,您不想仅仅因为积累了大量垃圾就从缓存中删除内容。

一个选择是使用 softValues(),但我强烈建议不要这样做,因为软引用确实会损害生产性能。

正确的做法是仔细选择 maximumSize,它实质上限制了缓存将消耗的内存总量。如果条目占用的空间量可变,那么您可以使用 maximumWeight 代替它来建模。

关于java - 谷歌公共(public)缓存 - maximumSize 的默认值(和其他 "optional"设置) - 想要一个使用所有 "available"内存的缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9229006/

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