【发布时间】:2021-07-18 01:24:52
【问题描述】:
在下面的代码中...
public class MyObject {
public static Map<String, WeakReference<MyObject>> cache = new HashMap<>();
public static ReferenceQueue<MyObject> queue = new ReferenceQueue<>();
public MyObject(String... args) {
//define variables...
cache.put(args[0], new WeakReference<>(this, queue));
}
// getters and setters
}
如果MyObjects 不断创建,由于cache 只包含弱引用,垃圾收集器最终会从cache 中删除项目吗?这些项目会变成null吗?有没有更好的缓存对象的方法?我的目标是存储不和谐的消息,这样我就不必再次获取它们。
【问题讨论】:
-
在您的示例中定义明确的
ReferenceQueue有什么意义? -
为什么不使用WeakHashMap?
标签: java list hashmap garbage-collection weak-references