zoukankan      html  css  js  c++  java
  • 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需要担保什么的,空间利用率变高。

  • 相关阅读:
    3.18日
    线程的面试题
    关于instanceof测试遇到的问题
    spring
    自动登录代码
    Filter
    多态
    基于HTML,css,jQuery,JavaScript,MySQL搭建博客系统
    基于bootstrap+MySQL搭建动态网站
    基于bootstrap_网站汇总页面
  • 原文地址:https://www.cnblogs.com/chuliang/p/8689418.html
Copyright © 2011-2022 走看看