不要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();
}
Run Code Online (Sandbox Code Playgroud)
(想象一下,在这种情况下,Object表示一个使用大量内存的对象类型...喜欢BufferedImage什么的)
这有什么现实的效果吗?或者这只是浪费代码?
java memory garbage-collection weak-references soft-references