当前位置: 首页 > 内存管理 > 正文

内存管理器(二十三) 标记-复制式 回收算法

标记-复制式回收算法

GC 机制在一个系统中占重要地位,但是在使用过程中占用整体时间的最小部分,赋值器的执行开销产生的影响反而切实的影响这整个系统的性能。

半区复制回收

基本复制回收器会将堆划分为两个大小相等的半区,分别设置为来源空间,目标空间。

这个思想简要来说:就是把一个堆空间分成两个部分,一个为使目标区,就是已经被使用的,一个是回收区,就是要回收使用的区,当一个区域需要回收的时候则将目标区域中的内容复制进回收区。这个算法最明显的一个问题就是整个区域只有一半可以使用。

回收过程:在回收初始化完成后,半区复制回收器,首先将根对象复制到目标空间,并填充工作列表。然后逐步扫描复制相关内容。

这个算法的核心是工作列表的实现与遍历循环的方式。

这里Cheney 在1970年提出了Cheney 扫描,该算法利用目标空间中灰色对象实现先进先出队列。

算法思想如下图:

复制对象

 

就是如此复制。

 

本文固定链接: http://zmrlinux.com/2016/08/08/%e5%86%85%e5%ad%98%e7%ae%a1%e7%90%86%e5%99%a8%ef%bc%88%e4%ba%8c%e5%8d%81%e4%b8%89%ef%bc%89-%e6%a0%87%e8%ae%b0-%e5%a4%8d%e5%88%b6%e5%bc%8f-%e5%9b%9e%e6%94%b6%e7%ae%97%e6%b3%95/ | Kernel & Me

该日志由 root 于2016年08月08日发表在 内存管理 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 内存管理器(二十三) 标记-复制式 回收算法 | Kernel & Me