强引用(Strong Reference)
- 只要引用存在,即使内存溢出也不会将该对象回收
- 使用构造器创建的对象
软引用(Soft Reference)
- 内存即将溢出前的那一次 GC 会将该引用回收,通常用作高速内存缓存
- 使用
SoftReference
类来实现
弱引用(Weak Reference)
- 只要发生 GC 就会被回收
- 使用
WeakReference
类来实现
虚引用(Phantom Reference)
- 唯一会发生得就是该对象被回收时会收到系统通知。使用虚引用的目的就是为了得知对象被 GC 的时机,所以可以利用虚引用来进行销毁前的一些操作,比如说资源释放等。这个虚引用对于对象而言完全是无感知的,有没有完全一样,但是对于虚引用的使用者而言,就像是待观察的对象的把脉线,可以通过它来观察对象是否已经被回收,从而进行相应的处理。
- 虚引用不能直接放在
PhantomReference
中,而是必须放在一个ReferenceQueue
队列中