从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。
强引用:就算抛出内存溢出也不会释放的对象,如Object object = new Object()
软引用:系统快要发送内存溢出的时候,会将这些对象回收。不过需要二次回收。不明白什么为什么有些对象需要二次回收的可以看这里-> Finalize实现原理与代价
弱引用:比软引用更可有可无,无论当前内存是否足够,一次gc就会被回收。
虚引用:又叫幻引用,最弱,一个对象时候有虚引用的存在,不会对它的生存时间构成影响,唯一目的就是能在这对象被回收以后收到一个系统通知。