回收算法
程序计数算法
给对象添加一个引用计数器,每过一个引用计数器值就+1,少一个引用就-1。当它的引用变为0时,该对象就不能再被使用。它的实现简单,但是不能解决互相循环引用的问题
可达性算法
- 标记清理
- 标记整理
- 标记复制
gc root
- 虚拟机栈(栈帧中的本地变量表)中引用的对象
- 方法区中的类静态属性引用的对象
- 方法区中的常量引用的对象
- 本地方法栈中JNI(即Native方法)的引用的对象
gc触发条件
minor gc
- eden内存不足
full gc
- 元数据区内存不足
- 老年代内存不足
- System.gc()方法的调用
- 其他
- CMS GC时出现promotion failed和concurrent mode failure