java 对象的引用与回收机制

1)强引用(Strong Reference):Object obj = new Object();强引用的对象,GC回收器永远都不会回收掉这些被引用的对象。

2)软引用(Soft Reference):描述的是一些还有用但非必需的对象。在系统将会发生内存溢出之前,会把这些对象列入回收范围进行二次回收,也就是说系统将会发生内存溢出了,才会对他们进行回收。

3)弱引用(Weak Reference):程度比软引用更弱一些。这些对象只能生存到下次 GC 之前。当 GC 工作时扫描到,无论内存是否足够都会将其回收。

4)虚引用(Phantom Reference):一个对象是否存在虚引用,完全不会对其生存时间构成影响。如果一个对象存在虚引用,在这个对象被回收之前,它的虚引用会被添加到引用队列中去,也就是在引用队列中看到了这个对象的虚引用,就表示这个对象即将被回收,可以做一些回收之前的必要工作。