3. 几种对象引用强度

强引用(Strong Reference)

  • 只要引用存在,即使内存溢出也不会将该对象回收
  • 使用构造器创建的对象

软引用(Soft Reference)

  • 内存即将溢出前的那一次 GC 会将该引用回收,通常用作高速内存缓存
  • 使用SoftReference 类来实现

弱引用(Weak Reference)

  • 只要发生 GC 就会被回收
  • 使用 WeakReference 类来实现

虚引用(Phantom Reference)

  • 唯一会发生得就是该对象被回收时会收到系统通知。使用虚引用的目的就是为了得知对象被 GC 的时机,所以可以利用虚引用来进行销毁前的一些操作,比如说资源释放等。这个虚引用对于对象而言完全是无感知的,有没有完全一样,但是对于虚引用的使用者而言,就像是待观察的对象的把脉线,可以通过它来观察对象是否已经被回收,从而进行相应的处理。
  • 虚引用不能直接放在 PhantomReference 中,而是必须放在一个 ReferenceQueue 队列中

你可能感兴趣的:(3. 几种对象引用强度)