java中如何引用
引用类型分类
Java中的引用分为四种类型:强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)。每种引用类型具有不同的生命周期和垃圾回收行为。
强引用是最常见的引用类型,通过直接赋值创建:
Object obj = new Object();
软引用使用
软引用适合用于内存敏感的场景,当内存不足时会被垃圾回收器回收。通过SoftReference类实现:
SoftReference<Object> softRef = new SoftReference<>(new Object());
Object obj = softRef.get(); // 获取引用的对象
弱引用实现
弱引用比软引用更弱,只要发生垃圾回收就会被回收。通过WeakReference类实现:
WeakReference<Object> weakRef = new WeakReference<>(new Object());
Object obj = weakRef.get();
虚引用应用
虚引用主要用于跟踪对象被垃圾回收的状态,必须与ReferenceQueue配合使用。通过PhantomReference类实现:
ReferenceQueue<Object> queue = new ReferenceQueue<>();
PhantomReference<Object> phantomRef = new PhantomReference<>(new Object(), queue);
引用队列机制
引用队列(ReferenceQueue)用于在对象被回收时接收通知。可与软引用、弱引用或虚引用配合使用:

ReferenceQueue<Object> queue = new ReferenceQueue<>();
WeakReference<Object> ref = new WeakReference<>(new Object(), queue);
// 监控队列获取被回收的引用
Reference<?> polledRef = queue.poll();
引用类型对比
- 强引用:对象不会被回收,除非显式置为null
- 软引用:内存不足时回收
- 弱引用:GC时立即回收
- 虚引用:无法通过get()获取对象,仅用于回收跟踪
合理选择引用类型可以优化内存管理,特别是在缓存实现、资源清理等场景中。






