番石榴文件说

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


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


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

最佳答案

在后台,Guava的高速缓存实现为多个哈希表,每个哈希表都有一个专用锁,因此并发写入不会在单个锁上发生争用。

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

09-08 07:02