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

SciPy docs

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

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

sunicon 回答:com.github.benmanes.caffeine.cache.maximumsize(long maximumSize)是否允许最大记录达到maximumSize的记录数?

此措词是为了提供实现灵活性。在最新版本中,它显示为

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

Guava使用分段哈希表,其中每个分段都独立退出。由于它们是独立的,因此即使有另一空间可用,也会从一个区域中逐出。由于耦合到哈希表中,因此还可以确保该段即使在临时范围内也不会超过其限制。

咖啡因不会分割逐出策略,也不使用自定义哈希表。这使它可以在触发逐出之前达到最大容量,但这确实意味着它将暂时超过最大值。哈希表和驱逐策略是分离的,在哈希表上发生写操作,然后通过writeBuffer将其传达给策略。这是一个有限的缓冲区,将立即耗尽,但是如果以某种方式填充了缓冲区,则会对作家产生反压力,以使逐出保持下去。因此,缓存在负载下可能会略微超过最大值,但永远不会失控增长。

migration guide总结了需要注意的重要更改。

最大尺寸(或加权尺寸)

番石榴将在使用LRU算法达到最大尺寸之前逐出。使用Window TinyLFU算法超过阈值后,咖啡因将被驱除。

本文链接:https://www.f2er.com/2817845.html

大家都在问