如何用Java中的存储桶来衡量字符串池

Adi*_*pta 5 java string-pool

在浏览有关字符串池及其多年来的变化的这篇文章时,我遇到了以下声明:

在Java 7u40之前,默认池大小为1009个存储桶,但此值在较新的Java版本中受到一些更改。确切地说,从Java 7u40到Java 11的默认池大小为60013,现在增加到65536。

那么,字符串池中的存储桶是什么?这些如何与实习字符串的数量相媲美?这个概念类似于哈希图中的存储桶吗?

And*_*lko 3

那么,字符串池中的桶是什么?

字符串池基本上是一个哈希表。哈希表包含

这些与内部字符串的数量有何可比性?

它是实现定义的(特定于 JVM)并且取决于单个存储桶存储的条目数量。理想情况下,一个桶保留一个条目。

这个概念与哈希图中的桶类似吗?

是的,这是同样的想法。

为什么默认池大小会增长?(我的问题)

分配的存储桶越多,负载因子越低,这对性能有积极影响。我猜想表中占用的初始条目数会增加,因此保持负载因子更新(至少在同一水平)很重要。