Java中的4种类型的引用
Java中一共有4种类型的引用:StrongReference、SoftReference、WeakReference以及PhantomReference (幽灵引用)。
?
- Strong Reference
StrongReference 是 Java 的默认引用实现,它会尽可能长时间的存活于 JVM 内, 当没有任何对象指向它时Java GC 执行后将会被回收
SoftReference
SoftReference 所引用的对象在JVM内部不再有强引用时会被回收(虚拟机保证), 但会尽可能长的保留引用直到 JVM 内存不足时才会回收,这一特性使得 SoftReference 非常适合缓存应用
WeakReference
WeakReference 当所引用的对象在 JVM 内不再有强引用时, weak reference 将会被自动回收
PhantomReference
Phantom Reference(幽灵引用) 与 WeakReference 和 SoftReference 有很大的不同,因为它的 get() 方法永远返回 null, 这也正是它名字的由来
诸位可能要问, 一个永远返回 null 的 reference 要来何用,请注意构造 PhantomReference 时的第二个参数 ReferenceQueue(事实上 WeakReference & SoftReference 也可以有这个参数),PhantomReference 唯一的用处就是跟踪 referent何时被 enqueue 到 ReferenceQueue 中.
WeakHashMap Phantom ReferenceLets you clean up after finalization but before the space is reclaimed (replaces or augments the use ofPhantomReference
?