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) 标记整理算法

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

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

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

  • 相关阅读:
    变分自编码器(Variational Autoencoder, VAE)通俗教程
    神经网络图灵机(Neural Turing Machines, NTM)
    【Java设计模式】单例模式
    SupportV7包中 SwipeRefreshLayout 修改下拉控件的距离
    eclipse项目导入androidstudio
    LiveWriter Test
    【Android学习】XML文本的三种解析方式(通过搭建本地的Web项目提供XML文件)
    【百度地图学习-一】初始化以及TextOverlay
    【Android学习】四种布局方式
    【Android学习】数据传递三种方式
  • 原文地址:https://www.cnblogs.com/jiqianqian/p/6571143.html
Copyright © 2011-2022 走看看