3个问题:
1.如何判断对象为垃圾对象
a.引用计数法
在对象中添加一个引用计数器,当有地方引用这个对象的时候,引用计数器的值就+1,
当引用失败(例如,对象置为null),引用计数器的值就-1
b.可达性算法(推荐)
从GCroot根节点往下搜索,能走到就不是垃圾对象,走不到就是对象
2.如何回收
a.回收策略
标记-清除算法
把判定为垃圾对象做一个标记,进行清除
但是,有两个问题
1.效率问题
2.空间问题
复制算法
主要解决了效率问题
在Eden创建对象(80%)——垃圾的回收最喜欢的地方
Survivor(存活期)(20%)——垃圾回收后对象存活的地方
Tenured Gen
标记-整理算法
分代手机算法
b.垃圾回收器
serial
parnew
cms
G1
3.何时回收
原文:https://www.cnblogs.com/mm163/p/10847776.html