1. 如何确定被回收
标记是垃圾回收的第一步,确定内存那些正在使用,那些不再使用
- 对象回收——引用计数
- 对象回收——可达性分析
- 方法区回收
2.可达性分析算法
简单来说,将对象及其应用关系看作一个图,选定活动的对象作为GC ROOTS 然后跟踪引用链条,如果对象和GC TROOTs之间不可达, 也就是不存在应用,就可以被回收了

引用类型和可达性级别
引用类型
- 强引用:常见的普通对象引用,只要还有强引用指向一个对象,就不会被回收
- 软引用:JVM在内存呢不足时,才会尝试回收软应用的对象
- 弱引用:随时可能被回收
- 虚引用:不能通过他访问对象
可达性级别
强可达 软可达 弱可达 幻想可达 不可达
垃圾回收算法
- 标记-清除
- 复制-清除
- 标记-整理
分代收集
1、新生代
- eden
- s0
- s1
2、老年代
垃圾回收器
- 串行(单线程)
- 并行(多想成)
- 并发(CMS),针对老年代,使用标记-清除
- 并行 (ParNew)配合CMS对新生代使用
- G1 (分区)