1) 概念
用于释放不再使用的对象占用的内存
目的是清除不再使用的对象,通过确定对象是否被活动对象引用来确定是否该收集该对象
2) 常用方法
引用计数和对象引用遍历
3) 引用计数
对特定对象,通过引用计数来表示对象的引用数,当对象的引用数为0时,便可以进行垃圾回收
4) 对象引用遍历
从一组对象开始,沿着整个对象图的每条链接,递归确定可到达的对象,如果某对象不能从这些根对象的一个到达,则它作为垃圾回收
5) 分代
JVM创建的对象会放在堆中,而堆中对象会分为三个代:年轻代,老年代,持久代
年轻代:所有新创建的的新对象都是在年轻代分配堆空间,当年轻代的空间被填满以后,会导致一个收集,当年轻代存活时间变久,会移动代老年代
老年代:用来存储较长生命周期的对象,当老年代空间被填满以后,也会进行收集
持久代:描述应用程序类和元数据
6) 垃圾收集器的种类
串行收集器,并行收集器,并发标记清理收集器,G1收集器
7) 使用的算法
年轻代: 拷贝算法
年老代和持久代: 标记-清扫-压缩算法(mark-sweep-compact)