番石榴-intialCapacity和concurrencyLevel的差异

问题描述 投票:0回答:1

Guava文档说

https://guava.dev/releases/16.0/api/docs/com/google/common/cache/CacheBuilder.html#initialCapacity(int)

设置内部哈希表的最小总大小。例如,如果初始容量为60,并且并发级别为8,则创建八个段,每个段都有一个大小为八的哈希表。在施工时提供足够大的估计,避免了需要以便稍后进行昂贵的调整大小操作,但是请设置此值不必要的高浪费内存。

那么,如果要创建具有8行的8个表,使用initialCapacity有什么意义?这是一些文档输入错误吗?

java guava
1个回答
0
投票

在幕后,Guava的缓存被实现为多个哈希表,每个哈希表都有一个专用锁,因此并发写入操作不会在单个锁上竞争。

initialCapacity是指整个缓存的容量,而不是每个单独的基础表的容量。每个大小为8的8个表最多可以处理64个元素,因此文档是正确的。

© www.soinside.com 2019 - 2024. All rights reserved.