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

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

    1、标记-清除算法

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

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

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

    缺点就是:

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

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

    2、复制算法

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

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

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

    3、标记-整理算法

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

    优点:不会产生碎片空间

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

    4、分代垃圾收集算法

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

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

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

    新生代采用:复制算法

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

    [ 版权声明 ]: 本文所有权归作者本人,文中参考的部分已经做了标记! 商业用途转载请联系作者授权! 非商业用途转载,请标明本文链接及出处!
  • 相关阅读:
    java常用配置文件头部声明
    Error while launching application Error: spawn ENOMEM 解决
    Maven添加依赖后如何在IDEA中引用
    2017-2018 ACM-ICPC East Central North America Regional Contest (ECNA 2017)部分题解
    最小一乘法的一种数值算法?
    LOJ 6409. 「ICPC World Finals 2018」熊猫保护区
    min-max容斥复习
    BMCH
    大象
    关于高维卷积的一些不成熟的想法
  • 原文地址:https://www.cnblogs.com/gslgb/p/14724270.html
Copyright © 2011-2022 走看看