网络异常
请检查网络设置后重试
重新加载
Go内存管理
4
成员
登录后加入频道即可发帖
0/1000
不选择版块
发表
全部
烧肉点心蒸马桶
频道主
2024-10-30
CentralCache
是所有线程共享的缓存,也是保存的空闲内存块链表,链表的数量与ThreadCache中链表数量相同,当ThreadCache内存块不足时,可以从CentralCache取,当ThreadCache内存块多时,可以放回CentralCache。由于CentralCache是共享的,所以它的访问是要加锁的。
#Go
点赞
评论
分享
烧肉点心蒸马桶
频道主
2024-10-30
ThreadCache
每个线程各自的Cache,一个Cache包含多个空闲内存块链表,每个链表连接的都是内存块,同一个链表上内存块的大小是相同的,也可以说按内存块大小,给内存块分了个类,这样可以根据申请的内存大小,快速从合适的链表选择空闲内存块。由于每个线程有自己的ThreadCache,所以ThreadCache访问是无锁的。
#Go
点赞
评论
分享
烧肉点心蒸马桶
频道主
2024-10-30
Span
一组连续的Page被称为Span,比如可以有4个页大小的Span,也可以有8个页大小的Span,Span比Page高一个层级,是为了方便管理一定大小的内存区域,Span是TCMalloc中内存管理的基本单位。
#Go
点赞
评论
分享
烧肉点心蒸马桶
频道主
2024-10-30
Page
操作系统对内存管理以页为单位,TCMalloc也是这样,只不过TCMalloc里的Page大小与操作系统里的大小并不一定相等,而是倍数关系。
#Go
点赞
评论
分享
烧肉点心蒸马桶
频道主
2024-10-30
3.2.1 TCMalloc
TCMalloc是Thread Cache Malloc的简称,Google开发的一个内存分配器。它主要用于C和C++编程语言,是Go内存管理的起源.
Go的内存管理是借鉴了TCMalloc,TCMalloc的核心理念就是分级缓存。
#Go
点赞
评论
分享
公告
暂无公告
直播
暂无直播