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

    JVM一共有四种垃圾收集算法:标记-清除算法,复制算法,标记-整理算法,分代垃圾收集算法

    1、标记-清除算法

    分为两个阶段:标记和清除阶段。

    这个算法⾸先标记出所有还存活的对象,回收掉所有没被标记的对象

    优点是:实现简单,不需要额外的空间

    缺点就是:

    ① 回收效率低(因为两次扫描,严重浪费时间)

    ② 会产生大量的内存碎片,导致无法给大对象分配内存空间

    2、复制算法

    它将内存区域分为相等的两块,每次只使用其中的一块。

    当正在使用的这一块区域用完了,就将还存活的对象复制到另外那块区域中,然后集中对之前使用的那块进行清理。

    缺点就是:只使用了一半的内存空间,空间利用率地低

    3、标记-整理算法

    这个算法标记出所有存活的对象,然后将他们整理并移动到内存区域的一端。然后清理掉存活对象所占区域边界以外的区域

    优点:不会产生碎片空间

    缺点:需要移动大量对象,处理效率比较低

    4、分代垃圾收集算法

    现在的商业虚拟机一般都采用这种算法。

    这个算法根据对象存活周期,将内存分为几块(新生代-老年代),不同的快采取不同收集算法。

    其中的新生代又详细分为:Eden区,幸存区1(from区),幸存区2(to区).他们的比例默认为:8:1:1

    新生代采用:复制算法

    老年代采用:标记-清除算法 或者 标记-整理算法

    [ 版权声明 ]: 本文所有权归作者本人,文中参考的部分已经做了标记! 商业用途转载请联系作者授权! 非商业用途转载,请标明本文链接及出处!
  • 相关阅读:
    CSS开发中常用技巧总结
    Linq的分组功能
    深入理解 C# 协变和逆变
    js数组删除数组元素!
    关于 Photoshop 蒙版和 Alpha 通道
    jQuery数组处理详解(含实例演示)
    多媒体指令(灰度像素最大值)
    多媒体指令(图像均值模糊)
    matlab练习程序(立体相关块匹配)
    matlab练习程序(steerable filters)
  • 原文地址:https://www.cnblogs.com/gslgb/p/14724270.html
Copyright © 2011-2022 走看看