• 《深入理解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堆分为新生代和老年代。新生代采用复制算法,老年代采用“标记 - 清理”或“标记 - 整理”算法。

  • 相关阅读:
    「SOL」工厂选址(BZOJ)
    「NOTE」数论小札
    Flask实现简单的群聊和单聊
    python基础总结
    基于Flask和百度AI实现与机器人对话
    django创建路径导航
    django中权限控制到按钮级别
    django中非菜单权限的归属
    MongoDB的增删改查
    jQuery于js的区别和联系
  • 原文地址:https://www.cnblogs.com/langfanyun/p/7045617.html
Copyright © 2020-2023  润新知