垃圾回收(1)

3个问题:

1.如何判断对象为垃圾对象

  a.引用计数法

    在对象中添加一个引用计数器,当有地方引用这个对象的时候,引用计数器的值就+1,

    当引用失败(例如,对象置为null),引用计数器的值就-1

  b.可达性算法(推荐)

    从GCroot根节点往下搜索,能走到就不是垃圾对象,走不到就是对象

2.如何回收

  a.回收策略

    标记-清除算法

        把判定为垃圾对象做一个标记,进行清除

        但是,有两个问题

        1.效率问题

        2.空间问题

    复制算法 

        主要解决了效率问题

        在Eden创建对象(80%)——垃圾的回收最喜欢的地方

        Survivor(存活期)(20%)——垃圾回收后对象存活的地方

        Tenured  Gen

    标记-整理算法

    分代手机算法

  b.垃圾回收器

    serial

    parnew

    cms

    G1

3.何时回收

猜你喜欢

转载自www.cnblogs.com/mm163/p/10847776.html