LAB GARBAGE COLLECTION
本实验采用自动内存管理的算法,标记-清扫(mark-sweep)算法。
在这一方案下,内存单元并不会在变成垃圾的同时立刻回收,而是保持不可到达和未被发
现的状态,直到所有可用的内存都耗尽。如果此时再次出现对新单元的请求,系统会暂时挂起
“有用”的程序,并调用垃圾收集例程,将堆中所有当前并未使用的单元清扫回自由单元池
中。标记-清扫算法依靠对所有存活单元进行一次全局遍历来确定哪些单元可以回收。这个遍历
从根出发,标明所有可以到达的单元。根据定义,这些就是存活单元。除此之外,所有其他节
点都是垃圾,可以送回自由单元池。如果垃圾收集器成功地回收了足够的内存,用户程序的请
求就能得到满足,并且可以继续进行工作。
有如下重要步骤:
通过获取 1 页的内存初始化堆:空闲列表指针和分配的树指针占据本页面的前两个字。页
面的其余部分是我们的第一个空闲块。 将空闲列表指针设置为指向它,并将分配的树指针设置
为 NULL。