zoukankan      html  css  js  c++  java
  • 垃圾收集算法

    标记-清除算法

      顾名思义,首先标记所有需要回收的对象,然后统一回收所有被标记的对象

      缺点:

        1.标记和清除的效率都不高

        2.标记清除后会产生大量的内存碎片

    复制算法

      内存按容量划分为大小相等的两块,每次只使用其中一块内存,当其中一块内存使用完后,将还活着的对象复制到另一块内存上,然后把已使用的内存空间一次性清除掉,这样内存分配时就不用考虑内存碎片的情况,实现简单,运行高效,但是会浪费一半的内存。现在一般是9:1,这样就只会浪费10%的内存空间,但是需要有其他的内存空间进行分配担保。

    标记-整理算法

      复制算法在对象存活率较高时要进行较多的复制操作,效率会降低。所以老年代不会使用这种算法。

      标记-整理算法的标记过程和标记-清除算法一样,后续是先将存活的对象向一段移动,然后清理掉端边界以外的内存,这样在内存分配时也不用考虑内存碎片的问题。

    分代收集算法

      这种算法没用新的思想,只是根据内存的存活周期内存分为新生代和老年代,新生代对象的存活率较低,使用标记-清除算法或者标记-整理算法,老年代的存活率较高,使用复制算法。

  • 相关阅读:
    window.open跨页面传输
    history对象
    类vr特效的360度全景
    移动端图片滑动
    图片拼图
    20180808 考试记录
    [jzoj 5770]【2018提高组模拟A组8.6】可爱精灵宝贝 (区间dp)
    20180806 考试记录
    [luogu2319 HNOI2006] 超级英雄 (匈牙利算法)
    [luogu2679] 子串 (多维dp)
  • 原文地址:https://www.cnblogs.com/yu-xia-zheng-ye/p/13645578.html
Copyright © 2011-2022 走看看