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();
}
(假设本例中的对象表示一个使用大量内存的对象类型……就像BufferedImage
之类的东西)
这有什么实际效果吗?或者这只是一种代码的浪费?
https://stackoverflow.com/questions/14450538
复制相似问题