一、堆栈
- 基本概念:堆栈是一种后进先出(LIFO)列表。允许执行两个操作:一是在顶部添加数据(push);二是从顶部返回一些数据(pop)。
- 堆栈中通常有一个堆栈指针,保留一个地址,该地址只是堆栈的当前边界。堆栈通过移动SP来扩展以包含必要的信息。包括:
参数——所有函数的参数都可以保持在堆栈上。
返回地址——为了能够在执行调用函数后,任然可以调用原函数,函数被调用后的下一条指令的地址被保持到堆栈中。
局部变量——所有局部变量的位置,也可以保持在堆栈上。
当调用的子例程时放在堆栈上 的这种结构被称为活动帧。
二、手动内存管理
三、自动 内存管理
- Mutator
- 分配器(Allocator)
- 回收器(Collecort)
- 引用计数
- 跟踪回收器(Tracking Colector)
- 标记阶段
- 保守垃圾回收器(Conservative Garbage Collector)
- 精确垃圾回收器(Precise Garbage Collector)
- 回收阶段
- 清除、压缩