• copy GC 和 mark & compaction GC的算法异同


    copy GC是,对所有child子节点,判断,

    如果child没有被访问过,那么拷贝到新地址,child的forwording指向新地址,child标记为已访问,把自己对child的引用改为对新地址的引用。

    如果child已经被访问过,那么直接将对child的引用改为对child的forwording的引用,也就是对新地址的引用。

    m&c跟前者的区别是:并不是在另一块新内存上分配,而是在原有的内存分配,所以要先对最前面的存活对象进行分配,以保证不会被后来的覆盖,所以不能像copyGC那样图遍历一次搞定。

    过程是

    从root开始标记存活对象

    从内存地址最靠前的对象开始,根据大小,确定其地址

    从root开始,将对象对child的引用更改为新分配的地址

    从内存地址最靠前的对象开始,移动对象

    可以看出要遍历多次,而不是copyGC的遍历一次

    所以复制整理算法,比起copy算法,效率要低,吞吐量小。但是经过一次复制之后,还能存活的(比如A)在第二次就不需要再移动,而且不像copyGC需要担保什么的,空间利用率变高。

  • 相关阅读:
    Centos7防火墙
    MySql按日期进行统计
    MySQL配置文件详解
    MySQL查看和修改表的存储引擎
    计算文件词频
    MapReduce寻找共同好友
    Centos 7 安装 memcached
    Linux常用命令(二)--文件目录命令
    Linux常用命令(一)--系统命令
    python学习笔记:(八)条件语句
  • 原文地址:https://www.cnblogs.com/chuliang/p/8689418.html
Copyright © 2020-2023  润新知