首页 > 解决方案 > 尚未被 GC 删除的对象

问题描述

所以垃圾收集器不会立即删除对象,有没有办法设置对已经符合 GC 条件的对象的引用?

Object o = new Object(); o = null; // above object is eligible for GC // now can we retrieve the above object? as it is not destroyed by GC

标签: javagarbage-collection

解决方案


Object o = new Object();
WeakReference<Object> weakReference = new WeakReference<>(o);
o = null;

o = weakReference.get();

您可以引用要取消其引用的对象。除非它被 GC 清除,否则它将可用(更准确地说,弱可达) 。weakReference.get()

当然,如果没有任何类型的引用(强/软/弱/幻影)与它相关,它就会变得完全无法访问。


推荐阅读