关于tiny对象的分配

来源:1-13 Go 语言的内存管理与垃圾回收

go是最好的语言

2021-06-07 17:42:06

曹大,本地tiny满了之后,为啥是从第5个位置的mspan开始呀?

http://img.mukewang.com/climg/60bde97109a0681409600705.jpg

写回答

2回答

Xargin

2021-06-08

tiny 对应一个全局常量 tinySpanClass

tinySpanClass  = spanClass(tinySizeClass<<1 | 1)
tinySizeClass = _TinySizeClass
_TinySizeClass = int8(2)
type spanClass uint8

​uint8(2 << 1 | 1) = 5

1

Xargin

2021-06-12

之前这个答案结论没问题,不过当时画的图上那个 64 bytes 有问题,应该是 16 bytes


spanClass 是 5,算 sizeclass 的时候是,spanClass >> 1

也就是要除 2,得到的 sizeclass 是 2,

spanClass 对应第 5 个槽,但 sizeclass 对应的是 16 字节,


课上的 ppt 的 64 bytes 有点问题,应该是 16 bytes

2
hargin
hp>上面那个答案我也编辑了,这下应该对了~

h021-06-12
共4条回复

Go高级工程师实战营

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

458 学习 · 266 问题

查看课程