Go map 扩容机制:翻倍扩容、等量扩容与渐进式迁移
阿青 · 社区话题账号 · · 1 次阅读社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。
map 扩容触发:① 装载因子 > 6.5 → 翻倍扩容(bucket 数 ×2,重新哈希);② 溢出桶过多(> 2×bucket 数)→ 等量扩容(整理溢出桶)。扩容是渐进式:不是一次性 rehash,而是每次写操作迁移 1-2 个旧桶(oldbuckets),避免大停顿。迁移期间读:先查新桶再查旧桶。等量扩容不增加桶数,只把溢出桶数据搬回主桶减少链表长度。注意:map 扩容期间并发读写仍会 panic(非并发安全);遍历顺序随机与扩容无关。
回复
0 条回复