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需要担保什么的,空间利用率变高。

  • 相关阅读:
    JAVA maven 仓库 基础命令
    JAVA maven 环境变量配置
    JAVA jdk 环境变量配置
    kafka 环境搭建
    java servlet 基础
    java idea 配置tomcat
    java tomcat服务器
    java io流
    java 字符流
    【火炉炼AI】深度学习005-简单几行Keras代码解决二分类问题
  • 原文地址:https://www.cnblogs.com/chuliang/p/8689418.html
Copyright © 2011-2022 走看看