zoukankan      html  css  js  c++  java
  • 《深入理解Java虚拟机》笔记02 -- 垃圾收集算法

    1. 标记 - 清除算法

        先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。它是最基础的收集算法。其他收集算法都是根据其思路,改进其不足之处。

        缺点:1) 标记和清除两个阶段的效率都不高;2)清除后会产一大量不连续的内存碎片

    2. 复制算法

        将可用内存划分为大小相等的两块,每次只使用其中一块。当一块内存用完了,将还存活的对象复制到另一块,然后将使用过的那块全部清空。

        缺点:可使用内存仅为分配的一半,代价太高。

        这种算法主要用在新生代。新生代中大多数对象都是朝生夕死的,所以并不需要1:1来划分,而是分为一块较大的Eden区和两块较小的Survivor区,每次使用Eden和其中一块Survivor。当回收时,将Eden和Survivor中还存活着的对象一次性地复制到另外一块Survivor区,最后清理掉Eden和刚才用过的Survivor空间。HotSpot虚拟机默认的Eden和Survivor的大小比例是8:1。

    3. 标记 - 整理算法

        标记过程与“标记 - 清除”算法一样,但后续步骤不是直接对可回收对象进行清理,而是让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。

    4. 分代收集算法

        按照对象存活周期的不同,一般把Java堆分为新生代和老年代。新生代采用复制算法,老年代采用“标记 - 清理”或“标记 - 整理”算法。

  • 相关阅读:
    addEventListener、onclick和jquery的bind()、click()
    JQuery的click、bind、delegate、off、unbind
    JS的Scope
    JS对象深入剖析
    IP查找所属网段
    C#类的成员初始化顺序
    C#操作XML的完整例子——XmlDocument篇
    【开发实例】C#调用SAPI实现语音合成的两种方法
    C#打包制作安装程序过程全记录
    C# 仿制QQ弹出新闻消息框
  • 原文地址:https://www.cnblogs.com/langfanyun/p/7045617.html
Copyright © 2011-2022 走看看