强引用(StrongReference)
一般的引用,只要该对象有一个强引用,该对象就不会被垃圾回收器回收,如:Student st = new Student();
st就是一个强引用,当st = null
时或超过引用作用域,对象没有引用了,就会被垃圾回收器标记回收
软引用(SoftReference)
用于一些有用但不必须的对象,只有当虚拟机认为内存不足时,在抛出OutOfMemoryError
之前才会试图回收软引用指向的对象。软引用通常用于实现内存敏感的缓存,当内存充足时保留该对象,内存不足时清理该对象防止内存耗尽
弱引用(WeakReference)
用于引用一些不必须的对象,当GC执行时总是被回收,不管内存是否充足
虚引用(PhantomReference)
如果一个对象只是被虚引用引用,则就和没有被引用一样,任何情况都可能被回收,必须搭配引用队列同时使用
引用强度:强引用 > 软引用 > 弱引用 > 虚引用