当前位置: 首页 > news >正文

石家庄站内换乘示意图最优化方法

石家庄站内换乘示意图,最优化方法,北京中交建设公司网站,网站怎么做更新关注 go 语言内存分配策略,主要是想了解 go 的性能。申请不同大小的内存,性能开销是有差别的,申请内存越大,耗时也越久,性能也越差。 内存分配 参考 Go1.17.13 版本源码,从内存分配大小上区分了 tiny、sm…

关注 go 语言内存分配策略,主要是想了解 go 的性能。申请不同大小的内存,性能开销是有差别的,申请内存越大,耗时也越久,性能也越差。

内存分配

参考 Go1.17.13 版本源码,从内存分配大小上区分了 tiny、small、large 3种对象类型,具体实现细节在函数 mallocgc
中。代码的逻辑结构如下:

if size <= maxSmallSize {if noscan && size < maxTinySize {} else {}
} else {
}

small 和 large 的区分标准是 32kb,小于等于 32kb 都属于 small 对象,而 tiny 需要小于 16byte。tiny 内存分配还限制了对象类型, noscan 用来标识对象中不包含指针类型。

小对象的申请

小对象的申请比较简单,下面这几行源码可以清晰的描述流程:c 表示当前的 mcache,首先计算小对象对应的 spanClass,然后尝试获取对应 span 链表中第一个空内存块,如果获取失败,尝试通过 nextFree 获取。

	size = uintptr(class_to_size[sizeclass])spc := makeSpanClass(sizeclass, noscan)span = c.alloc[spc]v := nextFreeFast(span)if v == 0 {v, span, shouldhelpgc = c.nextFree(spc)}

c.alloc 是长度为 136 的数组类型,每个 sizeclass 分别对应了 noscan 和 scan 两种类型的内存分配。通过函数 makeSpanClass 可以计算出 alloc 数组的下标,同类型的 noscan、scan 交替出现。

func makeSpanClass(sizeclass uint8, noscan bool) spanClass {return spanClass(sizeclass<<1) | spanClass(bool2int(noscan))
}
  • 逃逸分析反思
  • go size class 内存分配思考
  • Go参考TcMalloc内存分配
http://www.15wanjia.com/news/20231.html

相关文章:

  • 襄阳做网站多少钱seo引擎搜索网址
  • 政府网站信息内容建设实施意见网上推广方式
  • 百度做网站的特点企业网络推广的方法
  • 青岛网站制作网站哪个合肥seo好
  • 律师网站模版网站宣传和推广的方法有哪些
  • 东莞做公众号的网站nba季后赛最新排名
  • 手机版网站推荐常见的网络营销方式有哪几种
  • 安徽圣力建设集团网站百度推广步骤
  • 客户做百度推广后修改网站url需要哪些流程友情链接可以随便找链接加吗
  • iis怎么添加网站西安网站制作建设
  • 网站做下载页面java成品网站
  • 杭州企业标志设计优化绿松石什么意思
  • 吉林市网站制作哪家好百度地图推广怎么做的
  • 做逆战网站的名字吗网络培训心得体会总结
  • 广东知名网站建设深圳网络推广大师
  • 30个做设计的网站旅游网站网页设计
  • 网站内容优化方案太原seo
  • 网站文件上传完成后打开网站显示网站建设中怎么回事?宁波seo费用
  • 分析网站的关键词口碑营销成功案例
  • 做bbs网站教程百度搜索推广是什么
  • 网页设计与网站开发试题技术培训机构排名前十
  • 电子商城网站设计seo社区
  • 湖南定制响应式网站有哪些百度提升优化
  • 广东网站建设微信商城运营百度app官方正式版
  • 大淘客怎样做网站搜索引擎优化的主要工作有
  • b2c网上商城有哪些邯郸网站seo
  • 求可以做问卷测试的网站简述提升关键词排名的方法
  • 上海微信小程序网站建设中国网站排名前100
  • 如何做自己的淘宝网站如何开通网站
  • 海南做网站24小时免费看的视频哔哩哔哩