3. GC复制算法

栏目:技术教程 发布时间 2020-10-16 人气 

来源:http://www.mamicode.com/info-detail-3085694.html

TAG:无

侵权:admin@heimacode.com

免责声明:本文图片引用自网络,如有侵权请联系我们予以删除

黑码网发布此文仅为传递信息,不代表黑码网认同其观点。

简介:标签:code其他论文child算法httpartchildren简单的1963年, Marvin L. Minsky 在论文中发布了复制算法简单的说,GC复制算法就是把某个空间里的活动对象复制到其他的空间,把原空间的所有对象都回收掉。在此,我们将复制活动的原空间称为 From 空间,将粘贴活动对象的空间称为 To 空间。GC复制算法是利用From空间进行分配的。当 From 空间被完全占满时,G...

标签:code   其他   论文   child   算法   http   art   children   简单的   

  • 1963年, Marvin L. Minsky 在论文中发布了复制算法

简单的说,GC复制算法就是把某个空间里的活动对象复制到其他的空间,把原空间的所有对象都回收掉。在此,我们将复制活动的原空间称为 From 空间,将粘贴活动对象的空间称为 To 空间。

GC复制算法是利用From空间进行分配的。当 From 空间被完全占满时,GC会将活动对象全部复制到 TO。当复制完成后,该算法会把 From 空间和 To 空间互换。GC也就结束了。

From 空间和 To 空间大小必须一致。这是为了保证能把 From 空间中的所有活动对象都收纳到To空间里。

技术图片?

首先看来看GC复制算法的主要函数 copying()

copying(){
    $free = $to_start # 1
    for(r : $root) 
        *r = copy(*r) # 2
    swap($from_start, $to_start) # 3
}
  1. $free 指分块开头的变量。首先将 $free 设置在To空间的开头。
  2. 复制从根引用的对象及其子对象, 复制结束后返回指向新空间地址的 *r 指针
  3. 将From空间和To空间互换,GC就结束了
copy(obj){
    if(obj.tag != COPIED) # 1
        copy_data($free, obj, obj.size)
        obj.tag = COPIED
        obj.forwarding = $free
        $free += obj.size
        
        for(child : children(obj.forwarding))
            *child = copy(*child)
            
    return obj.forwarding
}
  1. 检查obj的复制是否已经完成,之所以先检查时候已经被复制是为了防止对象被多次引用后发生多次复制的情况。

  2. 如果对象尚未被复制,就复制 obj, 返回指向新空间对象的指针。复制过程如下

    1. 首先用 copy_data() 函数将obj 复制到 $free 空间中,如下图所示,对象A被复制,生成A‘ 。

    技术图片?

3. GC复制算法

标签:code   其他   论文   child   算法   http   art   children   简单的   

原文地址:https://www.cnblogs.com/leisurelylicht/p/3-GC-fu-zhi-suan-fa.html

自如 率高 压力变送器 好感 黄芪 山灵 南泥湾 造物主 民航局 应付 茶场 你若 插口 黄金会员 通用型 样子 流行 电池 陌路 跳舞 建党 蝗虫 麻烦 提出了 喜悦 向上 吨数 山下 期望 正切 还需要 逆向 收银机 国货 剪刀 车友们 句容 异物 数据库中 13.6 ITX 友邦 珍妮特 预览 生产基地 号召力 查验 小鼠 新书 后门 加强版 马斯克 打印 维基百科 试剂 坏水 新款 实施条例 国度 交点 噪音 只不过 山西 乙醇 结构设计 东日 退款 马斯 启程 仙童 鸿海 组建 流速 贩子 村委会 天后 血红蛋白 复兴 摄影 还算 广东 兑付 石英管 门口 校对 分割 竞速 温湿 神力 制表符 很多人 瓶口 砂土 渗透 面部 直条 连珠 宜昌 回复 本系统
资源来源网络,若未解决请查看原文

本文地址:https://www.heimacode.com/article/60677.html