• 垃圾收集算法


    1. 标记—清除(Mark-Sweep)算法

    1.1 定义

      最基础的算法,包括标记和清除两部分。

      首先把需要回收的对象进行标记,标记完成后进行回收。

    1.2 缺点

      a.标记和清除的效率都很低;

      b.该算法收集后产生大量不连续的内存碎片,导致分配大对象没有完整的足够大的内存而触发GC;

    2. 复制算法

    2.1 定义

      将内存分为大小相等的A,B两块,先在A内存上分配对象,当A内存不够使用时将所有存活的对象复制到B内存(复制后的对象内存是连续的),然后清除A内存。

    2.2 缺点

      内存只有原来的一半;

    2.3 优化

      因为在堆中,新生代的对象大多时朝生夕死,而老年代对象存活率较高。

      因此在新生代中 Eden : From Survivor :To Survivor = 8:1:1 大大提高了内存的使用率。

      新创建的对象都会被分配到Eden区(一些大对象特殊处理),这些对象经过第一次Minor GC后,如果仍然存活,将会被移到Survivor区。对象在Survivor区中每熬过一次Minor GC,年龄就会增加1岁,当它的年龄增加到一定程度时,就会被移动到年老代中。

    3. 标记—整理(Mark Compact)算法

    3.1 定义

      先对对象进行标记,然后让所有存活的对象向一端移动,最后清除端边界以外的内存。

      适用于存活率较高的老年代。

    4. 分代收集

      现在商业虚拟机根据堆中新生代和老年代的不同特点,使用不同收集算法进行收集,进而提高收集效率

  • 相关阅读:
    P1428 小鱼比可爱
    P5727 【深基5.例3】冰雹猜想
    P1427 小鱼的数字游戏
    P1047 [NOIP2005 普及组] 校门外的树
    P5729 工艺品制作
    P5728 【深基5.例5】旗鼓相当的对手
    CodeSmith使用和语法简介
    系统缓存
    FLV视频转换的利器 ffmpeg.exe
    Vs.Net方向将Excel数据导入到数据库
  • 原文地址:https://www.cnblogs.com/virgosnail/p/9509936.html
Copyright © 2020-2023  润新知