1、强引用(死也不回收)
new出来的对象 ,死也不回收 OOM的主要原因之一
2、软引用(不够即回收)
内存够时不清空,内存不够时 执行二次回收,回收后依然不够后报OOM
User u = new User();
SoftReference<User> usor = new SoftReference<User>(u);
u = null ;
usor.get(); //获取对象 回收前能获取到
3、弱引用(发现即回收)
第一次垃圾回收时就进行回收
User u = new User();
WeakReference<User> usor = new WeakReference<User>(u);
u = null ;
usor.get(); //获取对象 回收前能获取到
4、虚引用(对象回收跟踪)
完全不决定对象的生命周期,希望回收前得到一个系统通知
get不到对象
特点
1、软引用和弱引用非常适合保存可有可无的缓存数据
2、finalize()方法在垃圾回收时调用,可进行复活对象 但是只能调用一次