gpt4 book ai didi

Guava 缓存逐出策略

转载 作者:行者123 更新时间:2023-12-04 09:36:53 25 4
gpt4 key购买 nike

我最近尝试了 Guava 缓存,并且对驱逐政策感到惊讶。尽管在文档中明确将缓存声明为lru,但事实并非如此。对我来说,如我的测试所示,逐出看起来是随机的。 (测试是添加100个测试,获得100个条目,放置100个不同的条目,检查逐出顺序)我不想在运行时检测到一些意外的逐出。您能否提供一个有关大小受限制的缓存的驱逐策略背后的背景知识。我怎样才能像LHM一样强制关闭 Guava 缓存?

最佳答案

Guava缓存被分为concurrencyLevel不同的哈希表,以允许多个并发读取和写入。默认的concurrencyLevel是4。基本上,如果将maximumSize设置为100,则实际上只会导致四个段中的每个段的maximumSize为25。这就是maximumSize文档指出的原因:

Note that the cache may evict an entry before this limit is exceeded. As the cache size grows close to the maximum, the cache evicts entries that are less likely to be used again.



因此,如果偶然有30个条目进入一个特定分割市场,那么其中5个条目将被逐出。

获得 Cache最近最少访问的全局驱逐的唯一方法是通过设置 concurrencyLevel(1)完全关闭并发。即使这样,文档也不能保证元素的逐出顺序,您也不应该依赖它。

关于 Guava 缓存逐出策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10236057/

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