【发布时间】:2013-01-05 05:02:32
【问题描述】:
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 或其他东西)
这有什么实际效果吗?或者这只是浪费代码?
【问题讨论】:
标签: java memory garbage-collection weak-references soft-references