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

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

    1、标记-清除算法

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

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

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

    缺点就是:

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

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

    2、复制算法

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

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

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

    3、标记-整理算法

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

    优点:不会产生碎片空间

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

    4、分代垃圾收集算法

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

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

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

    新生代采用:复制算法

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

    [ 版权声明 ]: 本文所有权归作者本人,文中参考的部分已经做了标记! 商业用途转载请联系作者授权! 非商业用途转载,请标明本文链接及出处!
  • 相关阅读:
    条形码分类
    ubuntu下配置j2ee开发环境——sunjdk1.6的安装
    折腾的这几天
    Windows Phone 8 开发环境搭建
    Windows Phone SDK 8.0的安装软硬件配置要求
    ubuntu连接无线网遇到的错误和解决思路总结(无具体过程)
    解析html标签并转化成图片
    javaIO的类备忘
    ubuntu下配置j2ee开发环境——sunjdk1.7的配置
    Jmeter之JDBC Request及参数化
  • 原文地址:https://www.cnblogs.com/gslgb/p/14724270.html
Copyright © 2011-2022 走看看