我有一个疑问。我在本教程之一中读到,如果hashmap的键是弱引用类型,则对应于该键的值对于垃圾收集负责。请告诉我,假设我的hashmap是HashMap,它是普通的hashmap,那么该对象什么时候才对GC负责。假设我创建hashmap的方法包含一个无限循环,例如:
public void f(){
Map<String,Object> abc = new HashMap<Sring,Object>;
while(true){
//some operation
}
}
现在,如果不是String作为键,我使用的是一些弱键,那么效果会是什么? 感谢
答案 0 :(得分:1)
如果您没有明确使用弱引用,则无需担心它们。
答案 1 :(得分:0)
如果你有
HashMap<WeakReference<SomeType>, Object> map = ...;
然后只有WeakReference
对象中的对象才有资格进行垃圾收集,而不是WeakReference
对象本身。
对于任何HashMap
,只有当包含它们的HashMap
和引用它们的所有其他对象无法访问时,密钥才有资格进行垃圾回收。