浅谈GO-内存分配

go语言的内存分配不是每次都触发系统调用,go程序运行开始,先向操作系统申请一块较大的内存空间,然后由go在运行时分配

go内存分配的基本单元的mspan,为了减少内存碎片,go有67种大小的mspan,给对象分配最接近的mspan

GPM模型中,每个P有一块本地内存mcache,小对象直接从mcache中分配,各个gorutine直接也不存在竞争

mcentral,负责切割好mcache并记录哪些用了,哪些没有,当mcache不够用时,直接从mcentral申请

mheap,全局的堆内存管理,切割好mcentral,mcentral不够了向mheap申请

 

【Golang】内存管理 - 简书 (jianshu.com)

posted @ 2022-03-07 22:55  hugeQAQ  阅读(129)  评论(0编辑  收藏  举报