SoftReference
确实只有WeakReference
在创建为实例变量时才有帮助?在方法范围内使用它们有什么好处吗?
另一大部分是ReferenceQueue
。除了能够跟踪哪些引用被确定为垃圾之外,还Reference.enqueue()
可以用来强制注册一个对象进行垃圾回收吗?
例如,是否值得创建一个在对象中占用大量内存资源(由强引用持有)并创建引用以将它们排入队列的方法?
Object bigObject;
public void dispose() {
ReferenceQueue<Object> queue = new ReferenceQueue<Object>();
WeakReference<Object> ref = new WeakReference<Object>(bigObject, queue);
bigObject = null;
ref.enqueue();
}
(想象一下,在这种情况下,Object 代表一个使用大量内存的对象类型……比如BufferedImage
什么)
这有什么现实效果吗?或者这只是浪费代码?