标记-清除算法
概念
标记-清除算法由标记阶段和清除阶段构成。标记阶段是把 所有活动对象都做上标记的阶段。清除阶段是把那些没有 标记的对象,也就是非活动对象回收的阶段。
标记阶段
collector会为堆里的所有活动对象(根)打上标记,然后递归地标记通过指针数组能访问到的对象。深度优先搜索:尽可能从深度上搜索树形结构广度优先搜索:尽可能从广度上搜索树形结构
清除阶段
遍历整个堆,将未标记的对象(非活动对象)新增到“空闲链表”中进行回收,在回收的过程中将连续的空间合并。“空闲链表”中的元素用于新对象的分配。
优点:
算法简单,与保守式GC算法兼容
缺点:
碎片化,因为无法移动对象。分配速度慢,因为需要在“空闲链表”中需要合适大小的分块。

浙公网安备 33010602011771号