说一下对象有哪几种引用?

在Java中,引用分为四种类型:强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)。这四种引用的强度依次逐渐减弱。

  • 强引用是最常见和默认的引用类型。当我们使用强引用时,只要强引用存在,垃圾收集器就不会回收被引用的对象。例如:
Object obj =new Object();
  • 软引用用于描述一些还有用但非必需的对象。被软引用关联的对象,在系统即将发生内存溢出之前,会将这些对象列入回收范围进行第二次回收。只有当这次回收后仍然没有足够的内存时,才会抛出内存溢出异常。在JDK 1.2版本之后,引入了SoftReference类来实现软引用。
Object obj = new Object();
ReferenceQueue queue = new ReferenceQueue();
SoftReference reference = new SoftReference(obj, queue);
//强引用对象滞空,保留软引用
obj = null;
  • 弱引用是用于描述非必需对象的引用类型。与软引用不同,只有在垃圾收集器执行回收时,被弱引用关联的对象才会被回收。弱引用使用WeakReference类来实现。
Object obj = new Object();
ReferenceQueue queue = new ReferenceQueue();
WeakReference reference = new WeakReference(obj, queue);
//强引用对象滞空,保留软引用
obj = null;
  • 虚引用是最弱的引用类型。一个对象是否有虚引用的存在,对其生存时间没有影响,也无法通过虚引用获得对象的实例。虚引用主要用于监控对象被垃圾收集器回收的活动。在Java中,使用PhantomReference类来实现虚引用。

标签: java, Java面试题, Java问题合集, Java编程, Java问题精选, Java常见问题