Java中的引用类型主要分为以下几种,它们代表了对象在内存中不同的可达性和生命周期管理策略:
-
强引用 (Strong Reference) 强引用是最常见的引用类型,我们平时创建对象时使用的引用就是强引用。只要强引用存在,垃圾收集器就不会回收该对象,即使在内存不足的情况下,JVM也会宁愿抛出
OutOfMemoryError
错误也不回收强引用指向的对象。例如:1Object obj = new Object(); // 这里obj就是一个强引用
-
软引用 (Soft Reference) 软引用通过
SoftReference
类来实现,当JVM认为内存不足时,会回收软引用指向的对象,因此软引用主要用于实现一些内存敏感的缓存。被软引用关联的对象只有在内存不足时才会被回收。1SoftReference<Object> softObj = new SoftReference<>(new Object());
-
弱引用 (Weak Reference) 弱引用也是用来描述非必需对象的,但是它的强度比软引用更弱一些。弱引用通过
WeakReference
类实现,只要垃圾回收器扫描到弱引用,不管当前内存是否足够,都会回收掉弱引用指向的对象。1WeakReference<Object> weakObj = new WeakReference<>(new Object());