zoukankan      html  css  js  c++  java
  • GC(垃圾回收器)中的算法

    • GC的两种判定方法

             (1) 引用计数法

                  给对象添加一个引用计数器,每当引用一次+1,每次失效时-1,当计数器为0时,表示对象就是不可能再被使用的。

             (2) 可达性分析算法

                  将“GC Roots”对象作为根节点,开始向下搜索,所走过的路径成为引用链。当一个对象到GC Roots没有任何引用链时,说明此对象是不可用的。

    • 能作为GC Roots的对象

             (1) 虚拟机栈中引用的对象

             (2) 方法区中静态属性引用的对象

             (3) 方法区中常量引用的对象

             (4) 本地方法栈中JNI引用的对象

    • GC的收集方法

             (1) 标记清除算法

                  过程: * 标记阶段:先通过根节点,标记所有从根节点开始的可达对象,未被标记的视为垃圾对象

                           * 清除阶段:清除所有未被标记的对象

                  缺点: * 效率问题,标记和清除两个过程的效率都不高

                            * 空间问题,会产生大量不连续的内存碎片

             (2) 复制算法

                  过程: * 将原有的内存空间分成两块,每次只使用其中一块,在垃圾回收时,将正在使用的内存中存活对对象复制到未使用的内存块中,然后清除正在使用的内存块中所有对象

                  缺点: * 浪费一半的内存

                            * 如果对象的存活率很高,复制要花很长时间

             (3) 标记整理算法

                   过程: * 标记阶段:先通过根节点,标记所有从根节点开始的可达对象,未被标记的视为垃圾对象

                            * 整理阶段:将所有的存活对象压缩到内存的一端(或向另一端移动),之后清理边界所有的空间

                   缺点: * 效率也不高,不仅要标记存活对象,还要整理它们的引用地址

  • 相关阅读:
    .net MVC 图片水印,半透明
    提取数据库字段里面的值,并改变+图片懒加载,jquery延迟加载
    sqlalchemy + alembic数据迁移
    fastfdfs搭配nginx
    ubuntu安装fastdfds
    django自定义实现登录验证-更新版
    tornado异步
    django发送邮件的坑
    python3.6 ubuntu部署nginx、 uwsgi、 django
    ubuntu安装python3.6
  • 原文地址:https://www.cnblogs.com/jiqianqian/p/6571143.html
Copyright © 2011-2022 走看看