文本描述
Go进阶训练营 第13课 Go语言实践 - Runtime答疑 大明 目录 ?内存管理套路 ?垃圾回收基础 ?如何阅读源码 内存管理套路——以Linux内核作为对比 ? Linux buddy 内存管理 ? Linux SLAB 内存管理 ?对比和总结 Linux内存管理 —— buddy Linux 的内存管理,主要依赖于 buddy + slab。其中 Buddy: ?内存按照页进行划分,一页大小 是 4K ?多个页组成块,采用的是 2 的幂。 比如说1,2,4,8,16...1024个页组 成一块 ?相同大小的块被链表连接在一起 Linux内存管理 ——分配内存 buddy 内存分配:当用户需要特定 大小的块的时候,先去找最接近大 小的链表里面找,找不到空闲块再 去找更大的。 假设请求4个页的块,那么先去4个 页的链表里面找,找不到再去 8 个 页的链表里面找,再找不到就去16 个页的链表里找...直至找到 4 和 8 都没有 假如说我们在16个页链表里面找到 了,那么16个页分成 8+8 两个部 分,一个部分放到8个页的链表里 面。剩下的再被分成 4 + 4,一块 被分配走,一块被放到4个页的链 表里面