Golang Manual chm Go 语言手册 CHM格式
虚拟内存空间:堆区和栈区
栈区:函数调用的参数、返回值、局部变量,这部分内存由编译器管理
堆区:堆中的对象由内存分配器分配,垃圾收集器回收
内存管理的三个组件:用户程序、分配器、收集器
用户程序通过分配器在堆上初始化内存空间
分配方法
线性分配器、空闲链表分配器
1、线性分配:只需维护指针
缺点:无法在对象释放后重用该空间
2、空闲链表分配
可重用被释放的内存,内部维护空闲链表(数据结构),用户程序申请内存时会遍历链表找到足够大的内存块
类似策略:隔离适应,将内存划分为多个内存块大小不同的链表,单个链表