go语言的动态内存
go语言动态内存的申请和释放设计来自于tcmalloc主要数据结构:MHeap:the malloc heap,管理pageMCentral:特定类型小对象共享的free listMCache:线程本地小对象的共享free list 分配小对象 查找MCache相应大小的free list,如果free list非空,从free list中直接获取, 这种情况下不需要任何锁的开销 如果MCache的free list为空,则从MCentral获取一些free object 如果MCentral的free list为空,则从MHeap申请一些page,然后将page内存加入到相应MCentral的free list 如果MHeap缓存的page不足,则从操作系统申请一些page(至少1M) 分...阅读全文