关于tiny对象的分配

关于tiny对象的分配

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

http://img1.sycdn.imooc.com//climg/60bde97109a0681409600705.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

tiny 对应一个全局常量 tinySpanClass

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

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

Xargin 2021-06-12 13:03:48

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


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

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

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


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

  • 提问者 go是最好的语言 #1

    曹大,我有点懵,我看源码,他不就是按tinySpanClass找的槽吗?

    http://img1.sycdn.imooc.com//climg/60c449e409e899af05970141.jpg

    tinySpanClass是5

    http://img1.sycdn.imooc.com//climg/60c44a260972bd0e04380098.jpg

    这个是找第五个槽的意思吗?

    2021-06-12 13:47:10
  • 提问者 go是最好的语言 #2

    曹大,我理解的是第一和第二个槽分配large对象,第三和第四个槽分配<8字节的对象,第五和第六个槽分配<16字节的对象。我理解错了吧?

    2021-06-12 14:01:52
  • Xargin 回复 提问者 go是最好的语言 #3

    啊哈哈。。。我这手忙脚乱的,搞错了,你说的对,是第 5 个槽。。。只不过 sizeclass 对应的是 16 字节的 sizeclass

    2021-06-12 15:08:25
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师