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