gpt4 book ai didi

java - 当将弱引用或软引用与ReferenceQueue一起使用时,对象何时真正从内存中删除?

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:54 24 4
gpt4 key购买 nike

当将弱引用或软引用与ReferenceQueue一起使用时,对象何时真正从内存中删除?我是否必须调用 referancequeue.removereferancequeue.poll() 方法?

示例:

ReferenceQueue q = new ReferenceQueue();
WeakReference wr = new WeakReference(object, referenceQueue);


if (pr.isenqueued()) {

// do something

}

或者我必须遵循吗?

WeakReference weakref=null;

if ((weakref=q.removed())!=null) {

// do something

}

最佳答案

在您的示例中,WeakReference 在无法访问时将被垃圾收集器清理。另一方面,如果您使用软引用,只要有足够的内存,就会保留软可达对象。因此,如果您希望它持久存在,您应该使用 SoftReference。我想拥有控制权,即第二种方式会让你安心。如果您想自己进行清理操作而不是 GC,为了确保进度,您可以使用 PhantomReference 代替。它们在排队之前不会被垃圾收集器自动清除。

关于java - 当将弱引用或软引用与ReferenceQueue一起使用时,对象何时真正从内存中删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13008813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com