标签:两种 优先 利用 碎片 page 设定 建立 速度 情况
标记-清除算法由标记阶段和清除阶段构成。
标记阶段就是把所有的活动对象都做上标记的阶段。
清除阶段就是把那些没有标记的对象,也就是非活动对象回收的阶段。
分配
-> 伪代码实现内存分配
new_obj(size){
chunk = pickup_chunk(size, $free_list)
if(chunk != NULL)
return chunk
else
allocation_fail() //大招,销毁并释放全部空间
}
碎片化(fragmentation)
分配速度
与写时复制技术(copy-on-write)不兼容
使用多个空闲链表(multiple free-list)
大于这个上限的按照一个空闲链表处理。
-> 伪代码实现使用多个空闲链表的内存分配
new_obj(size){
index = size / (WORD_LENGTH / BYTE_LENGTH)
if(index <= 100)
if($free_list[index] != NULL)
chunk = $free_list[index]
return chunk
else
chunk = pickup_chunk(size, $free_list[101])
if(chunk != NULL)
return chunk
allocation_fail() //大招,销毁并释放全部空间
}
BiBOP(Big Bag Of Pages)法
标签:两种 优先 利用 碎片 page 设定 建立 速度 情况
原文地址:https://www.cnblogs.com/leisurelylicht/p/GC-biao-jiqing-chu-suan-fa-Mark-Sweep-GC.html