在Java中,对象的引用类型主要分为四种,它们分别是:
1. **强引用(Strong Reference)**:
- 这是最常见的引用类型,比如 `Object obj = new Object()`; 就是一个强引用。
- 只要强引用还存在,垃圾回收器就不会回收这个对象。
2. **软引用(Soft Reference)**:
- 软引用通过 `java.lang.ref.SoftReference` 类实现。
- 当系统内存不足时,垃圾回收器会回收软引用指向的对象来释放内存,但在此之前会清除这些对象的软引用。
- 软引用通常用于实现内存敏感的缓存。
3. **弱引用(Weak Reference)**:
- 弱引用通过 `java.lang.ref.WeakReference` 类实现。
- 弱引用不会阻止垃圾回收器回收其指向的对象,也就是说,只要垃圾回收器发现了弱引用,就会回收其指向的对象,并且清除弱引用本身。
- 弱引用常用于跟踪对象的生命周期,或者实现一些需要自动清理的数据结构。
4. **虚引用(Phantom Reference)**:
- 虚引用通过 `java.lang.ref.PhantomReference` 类实现。
- 虚引用的主要目的是在对象被回收后收到一个系统通知,或者实现延迟处理(比如延时写入磁盘)。
- 虚引用必须和 `ReferenceQueue` 一起使用,当垃圾回收器准备回收一个对象时&#x