mapextra的作用?

来源:1-9 神奇的内置数据结构

weixin_慕设计2382076

2021-05-31 08:38:45

曹大你好,不是很理解map中的extra的作用,我们不是可以通过map中的桶里面的overflow访问到溢出的数据,为什么还要链接到extra?

写回答

2回答

Xargin

2021-05-31

回复套回复没法编辑,我另开一个能编辑的回复吧:


这个涉及到 Go 的 GC,因为 map 的 key 和 value 不含指针的时候,GC 是不扫描 bucket 里的 entry 的,但是 overflow 本质上是个指针,这些 overflow 的桶(虽然不多)需要被 GC 扫描得到,要不然会被当成不可达的内存给回收掉


所以在 map 的 kv 不含指针,且 key size < 128 && v size < 128 的时候,需要专门把这些溢出桶找一个结构记录一下,保证这些 bucket 对象在内存管理看来是 "alive" 的。要不然 GC 会将这些 overflow 的 bucket 当成白色对象提前回收掉。

0

Xargin

2021-05-31

https://class.imooc.com/course/qadetail/291010,看看这个的话呢,里面有俩图

0
heixin_慕设计2382076
回复
hargin
hp>哦哦,明白了,感谢曹大细致的讲解

h021-06-04
共4条回复

Go高级工程师实战营

慕课网与 GoCN 社区官方联手打造,定义行业Go高级人才培养标准,4个月,快速晋升为P6+/D7级高级人才。

458 学习 · 266 问题

查看课程