Golang Map 如何扩容

装载因子:count/2^B

触发条件:

  1. 装填因子是否大于 6.5
  2. overflow bucket 是否太多

解决方法:

  1. 双倍扩容:扩容采取了一种称为“渐进式”地方式,原有的key 并不会一次性搬迁完毕,每次最多只会搬迁 2个bucket
  2. 等量扩容:重新排列,极端情况下,重新排列也解决不了,map 成了链表,性能大大降低,此时哈希种子 hash0 的设置,可以降低此类极端场景的发生

发表评论

后才能评论