① WeakReference对象的 referent 域被设置为 null , 从而使该对象不再引用heap 对象。 ② WeakReference引用过的 heap 对象被声明为 finalizable 。 ③ 当heap 对象的 finalize() 方法被运行而且该对象占用的内存被释放时, WeakReference 对象就被添加到它的 ReferenceQueue (如果后者存在的话)。 D、 GC发现一个...
软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收器回收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中。 ⑶弱引用(WeakReference) 弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱...
ReferenceQueue queue=newReferenceQueue();// 创建弱引用,此时状态为Active,并且Reference.pending为空,当前Reference.queue = 上面创建的queue,并且next=nullWeakReference reference=newWeakReference(newObject(),queue);System.out.println(reference);// 当GC执行后,由于是虚引用,所以回收该object对象,并且置于pending上...
Reference的几个关键成员变量是referent、queue、next、discovered,queue是一个引用队列。他有4个子类:SoftReference、WeakReference、PhantomReference和FinalReference。SoftReference复写了父类的get()方法。WeakReference和ReferenceQueue复写了构造函数,而FinalReference则复写了get、clear、enqueue方法。FinalReference用以手动释放内存...
JDK1.2以前只提供一种引用类型——强引用 Object obj = new Object(); 。而JDK1.2后我们多另外的三个选择分别是软引用 java.lang.ref.SoftReference 、弱引用 java.lang.ref.WeakReference 和虚引用 java.lang.ref.PhantomReference 。下面将记录对它们和相关连的引用队列 java.lang.ref.ReferenceQueue 和 java.uti...
importjava.lang.ref.ReferenceQueue;importjava.lang.ref.WeakReference;publicclassEnqueueExample{publicstaticvoidmain(String[]args){// 创建一个对象Objectobj=newObject();// 创建弱引用对象WeakReference<Object>weakRef=newWeakReference<>(obj);// 创建队列对象ReferenceQueue<Object>queue=newReferenceQueue<>();//...
⑶弱引用(WeakReference) 弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象。
5. RererenceQueue 当一个 WeakReference 开始返回 null 时, 它所指向的对象已经准备被回收, 这时可以做一些合适的清理工作. 将一个 ReferenceQueue 传给一个 Reference 的构造函数, 当对象被回收时, 虚拟机会自动将这个对象插入到 ReferenceQueue 中, WeakHashMap 就是利用 ReferenceQueue 来清除 key 已经没有强引...
首先,弱引用(weak reference) 是可以被GC强制回收的。当垃圾收集器发现一个弱可达对象(weakly reachable,即指向该对象的引用只剩下弱引用) 时, 就会将其置入相应的ReferenceQueue中, 变成可终结的对象. 之后可能会遍历这个 reference queue, 并执行相应的清理。典型的示例是清除缓存中不再引用的KEY。
在这个例子中,weakReference是一个弱引用,它指向一个新创建的Object对象。一旦垃圾回收器运行,这个对象就可能会被回收,而不管系统内存是否充足。 4. 虚引用(Phantom Reference) 虚引用是最弱的一种引用关系。一个对象是否有虚引用的存在,完全不会对其生存时间构成影响,也无法通过虚引用来获取一个对象实例。虚引用的...