对象是否死亡的2种判定方法,引用计数和可达性分析(又称引用链)。
1.引用计数
对象添加引用计数器,产生引用+1,引用失效-1,但是很难解决对象之间循环相互引用的问题。
2.可达性分析算法
选定一个对象作为GC Roots,如果一个对象对GC Roots不可达,那么就回收。
作为GC Roots的对象包括下面几种:
- 虚拟机栈中引用的对象。
- 方法区类静态属性引用的对象。
- 方法区中常量引用的对象。
- 本地方法栈中引用的对象。
四类引用:强引用、软引用、弱引用、虚引用(唯一作用是对象被收集时收到通知,1.2提供了PhantomReference类实现虚引用)