首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >com.github.benmanes.caffeine.cache.maximumsize(long maximumSize)允许最大记录数达到记录数- maximumSize?

com.github.benmanes.caffeine.cache.maximumsize(long maximumSize)允许最大记录数达到记录数- maximumSize?
EN

Stack Overflow用户
提问于 2020-01-05 18:27:45
回答 1查看 509关注 0票数 1

https://www.javadoc.io/doc/com.github.ben-manes.caffeine/caffeine/1.0.0/com/github/benmanes/caffeine/cache/Caffeine.html#maximumSize-long-

表示maximumSize()指定缓存可以包含的最大条目数。请注意,缓存可能会在超出此限制之前逐出条目。

它会表现出与我们在GuavaCache中看到的相同的行为吗?由于默认ConcurrencyLevel为4,最大计数比预期的要小得多。

EN

回答 1

Stack Overflow用户

发布于 2020-01-05 18:49:43

这种措辞是为了提供实现的灵活性。在最新的版本中,它写道,

请注意,缓存可能会在超出此限制之前逐出条目,或者在逐出时暂时超过阈值。

Guava使用分段哈希表,其中每个段独立地逐出。这会导致从一个段中逐出,即使另一个段中有可用的空间,因为它们是独立的。由于被耦合到哈希表中,它还确保段不会超过其限制,即使是暂时的。

Caffeine不对逐出策略进行分段,也不使用自定义哈希表。这使得它可以在触发驱逐之前达到最大容量,但这确实意味着它将暂时超过最大容量。哈希表和逐出策略是分离的,其中在哈希表上发生写操作,然后通过writeBuffer将其传送到策略。这是一个立即耗尽的有界缓冲区,但是如果它以某种方式被填满了,那么它就会对编写器产生反压力,以允许驱逐保持下去。因此,在负载下,缓存可能会超出最大值一小部分,但永远不会出现失控增长。

migration guide总结了需要注意的重要变化。

最大大小(或加权大小)

在使用LRU算法达到最大大小之前,芭乐将被逐出。一旦使用Window TinyLFU算法超过阈值,咖啡因就会排出体外。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59598919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档