← 返回首页

Go语言Map的扩容时机是怎样的?

向 map 插入新 key 的时候,会进行条件检测,符合下面这 2 个条件,就会触发扩容

  1. 装载因子超过阈值,源码里定义的阈值是 6.5,这个时候会触发双倍扩容

  2. overflow 的 bucket 数量过多:

    1. 当 B 小于 15,也就是 bucket 总数 2^B 小于 2^15 时,如果 overflow 的 bucket 数量超过 2^B;

    2. 当 B >= 15,也就是 bucket 总数 2^B 大于等于 2^15,如果 overflow 的 bucket 数量超过 2^15

这两种情况下会触发等量扩容。