美文网首页
垃圾回收

垃圾回收

作者: FightForFuture | 来源:发表于2019-01-22 19:48 被阅读0次

    一、判断对象是否可被回收

    1.1 引用计数法

    缺点:无法解决对象之间循环依赖的问题

    1.2 可达性分析算法

    当一个对象GC Roots 没有任何引用链相连,说明此对象不可达。
    GC Roots 对象包括以下几种:

    • 栈帧中的局部变量表引用的对象
    • 方法区中类静态属性引用的对象
    • 方法区中常量引用的对象
    • Native方法引用的对象

    二、垃圾回收算法

    • 标记-清除算法
      缺点:效率低,且会产生碎片
    • 复制算法
      Eden:Survivor = 8:1
      如果另一块survivor空间不足以存放上一次新生代存活的对象,这些对象将通过【分配担保】进入老年代。
      -标记-整理算法
      -分代收集算法(主流
      新生代 -> 复制算法(对象存活率低)
      老年代 -> 标记-整理算法(对象存活率高)

    三、内存分配与回收策略

    Min GC: 发生在新生代的垃圾回收
    Major GC/ Full GC: 发生在老年代的垃圾回收,出现Full GC,至少伴随一次 Min GC

    • 对象优先在** Eden区**分配,如果空间不够,触发一次Min GC
    • 大对象直接进入老年代(虚拟机参数控制)
    • 长期存活的对象进入老年代
    • 动态对象年龄判断
    • 空间分配担保

    相关文章

      网友评论

          本文标题:垃圾回收

          本文链接:https://www.haomeiwen.com/subject/xvaldqtx.html