zoukankan      html  css  js  c++  java
  • GC算法与收集器

    一.判断对象是否存活

    1.引用计数算法

    2.可达性分析算法

    二.垃圾收集算法

    1.标记-清除算法:效率低,内存碎片

    2.复制算法:适用于对象存活率低

    3.标记-整理算法:没有内存碎片

    4.分代收集算法:新生代用复制算法

                                老年代用标记-清除/整理算法

    三.HotSpot算法实现

    1.枚举根节点

    2.安全点:线程run状态

    3.安全区域:线程sleep/blocked状态

    四.垃圾收集器

    1.Serial收集器:单线程,暂停其它线程

    2.ParNew收集器:Serial收集器的多线程版

    3.Parallel Scavenge收集器:吞吐量优先,自适应调节策略

    4.Serial Old收集器:Serial收集器的老年代版本

    5.Parellel Old收集器:Parallel Scavenge收集器的老年代版本

    6.CMS收集器:

      目标:获取最短回收停顿时间

      算法:基于标记-清除。初始标记(Stop The World,耗时短)——>并发标记(与用户线程并发,耗时长)——>重新标记(Stop The World,耗时短)——>并发清除(与用户线程并发,耗时长)

      缺点:I.对cpu资源敏感;II.无法处理浮动垃圾;III.基于标记-清除算法,收集结束后会有大量空间碎片产生。

    7.G1收集器

      特点:I.并行与并发;II.分代收集;III.空间整合;IV.可预测的停顿。

      思路:化整为零,分为多个Region,Region直接建立Remembered Set。

      初始标记(Stop The World,耗时短)——>并发标记(与用户线程并发,耗时长)——>重新标记(Stop The World,gc线程间并行执行,耗时短)——>筛选回收(可以做到与用户线程并发,耗时长)

  • 相关阅读:
    ui、li模拟下拉框
    六项精进
    Echarts柱状图添加点击事件
    [UWP]爱恋动漫BT开发小记
    [杂谈]这个四月
    [uwp]自定义图形裁切控件
    [uwp]自定义Behavior之随意拖动
    [uwp]数据绑定再学习
    [mvc]记一次“项目”的历程
    [uwp]ImageSource和byte[]相互转换
  • 原文地址:https://www.cnblogs.com/xiehuazhen/p/10102679.html
Copyright © 2011-2022 走看看