在java中,引用的强度有以下四个级别:1.Strong Referece 2. soft reference 3. weak reference 4 PhantomReference
关于PhantomReference有以下几点需要注意:
1 the PhantomReference.get() method always returns null
2 another difference is that the PhantomReference is enqueueed only after the finalize() method has been called.
3 If you want the reference to be added to the reference queue, you have to keep a strong reference to the Phantom reference.(这一点很重要,为了保持phantom reference被回收后,添加到reference queue中,必须有一个strong reference 引用到这些phantom reference)
当phantom reference 被enqueue到队列时,phantom reference引用的referent已经在内存中删除。
分享到:
相关推荐
PhantomReference<Bean> phantom = new PhantomReference(new Bean("name", 10), queue); System.gc(); // 强制执行垃圾回收 System.out.println(phantom.get()); // null FinalReference 是一个特殊的引用类型,它...
周期无法控制可以采用SoftReference,WeakReference,PhantomReference这三种对象来执行(看了Ibatis的缓存机制才发现JDK居然还提供了PhantomReference这玩意儿,得恶补基础啊),这三种都是弱引用,区别在于强度...
- 示例:`PhantomReference<String> phantomRef = new PhantomReference(new String("PhantomReference Test"), new ReferenceQueue());` 理解这四种引用类型有助于开发者在设计和实现复杂系统时,更好地控制对象...
PhantomReference<String> phantomRef = new PhantomReference(new String("hello"), referenceQueue); ``` 在`java.lang.ref`包中,有三个类分别对应这四种引用:`SoftReference`、`WeakReference`和`...
本文将深入探讨这个包中的四种主要引用类型:StrongReference、SoftReference、WeakReference 和 PhantomReference,以及它们的特性、用法和作用。 首先,强引用(StrongReference)是我们在日常编程中最常见的引用...
PhantomReference<String> phantomReference = new PhantomReference(str, queue); str = null; // 断开强引用 System.gc(); // 请求GC // GC执行后,虚引用指向的对象已经被回收 // 通过ReferenceQueue检查虚...
- 示例:`PhantomReference pr = new PhantomReference(new String("hello"), queue);` - 通常用于管理堆外内存,如 DirectByteBuffer,当对象将被回收时,可以做一些额外的清理工作。 ThreadLocal 工作原理: - ...
- 使用** Cleaner / PhantomReference**:对于更复杂的情况,可以使用Cleaner或者PhantomReference来实现更精细的资源清理,但这种方式比直接使用try-finally更复杂,一般只在必要时使用。 5. Java 9及以后版本的...
相比之下,`PhantomReference`配合引用队列可以更精确地控制资源的释放时机。 六、资源池 对于昂贵的资源,如数据库连接,通常使用连接池进行管理。连接池预先创建并维护一定数量的连接,供程序需要时复用,使用...
创建虚引用的代码示例:`PhantomReference<Object> pf = new PhantomReference(obj);` 理解这四种引用类型对于进行JVM调优至关重要,因为它们可以帮助我们控制对象的生命周期,防止内存泄漏,以及优化内存使用效率...
SoftReference、WeakReference和PhantomReference分析和比较 在 Java 中,引用类型分为强引用、软引用、弱引用和虚引用四种。强引用是我们最常用的引用类型,而软引用、弱引用和虚引用则是 Java 为我们提供的三种...
- **例子**:` PhantomReference<Object> phantomRef = new PhantomReference(new Object(), new ReferenceQueue());` - **特点**:虚引用主要用来跟踪对象被垃圾收集的状态,通常不用于内存管理。 了解和正确...
- 示例:`PhantomReference<String> phantomRef = new PhantomReference(new String("Hello"), new ReferenceQueue());` 这些引用类型的使用需要根据具体需求来选择。例如,软引用常用于缓存策略,以保持一定数量...
PhantomReference<String> phantomRef = new PhantomReference(str, queue); if (queue.poll() == null) { System.out.println("phantom reference is still valid."); } else { System.out.println("phantom ...
Java从1.2版本开始引入了四种引用,分别是强引用(StrongReference)、软引用(SoftReference)、弱引用(WeakReference)和虚引用(PhantomReference)。这四种引用的级别由高到低依次为:强引用 > 软引用 > 弱引用...
然而,为了更细致地控制对象的生命周期,Java提供了一套特殊的引用类型,即弱引用(WeakReference)、软引用(SoftReference)和虚引用(PhantomReference),以及引用队列(ReferenceQueue)的概念,这些都定义在...
在Java的lang.ref包中,提供了SoftReference类、WeakReference类和PhantomReference类来分别代表软引用、弱引用和虚引用。此外,ReferenceQueue类表示引用队列,可以与这三种引用类联合使用,用于跟踪垃圾回收器回收...
Java中的四种引用类型是Java内存管理的重要组成部分,它们分别是强引用(StrongReference)、软引用(SoftReference)、弱引用(WeakReference)和虚引用(PhantomReference)。每种引用类型具有不同的特点和用途,...
PhantomReference<Bitmap> phantomRef = new PhantomReference(bitmap, referenceQueue); ``` 在这个例子中,`referenceQueue`是一个预先创建好的引用队列。当垃圾回收器准备回收`bitmap`时,会将`phantomRef`放入`...