java中弱引用的效果

时间:2014-02-13 05:39:50

标签: java

我有一个疑问。我在本教程之一中读到,如果hashmap的键是弱引用类型,则对应于该键的值对于垃圾收集负责。请告诉我,假设我的hashmap是HashMap,它是普通的hashmap,那么该对象什么时候才对GC负责。假设我创建hashmap的方法包含一个无限循环,例如:

public void f(){
Map<String,Object> abc = new HashMap<Sring,Object>;
while(true){
//some operation 
}

}

现在,如果不是String作为键,我使用的是一些弱键,那么效果会是什么? 感谢

2 个答案:

答案 0 :(得分:1)

如果您没有明确使用弱引用,则无需担心它们。

答案 1 :(得分:0)

如果你有

HashMap<WeakReference<SomeType>, Object> map = ...;

然后只有WeakReference对象中的对象才有资格进行垃圾收集,而不是WeakReference对象本身。

对于任何HashMap,只有当包含它们的HashMap和引用它们的所有其他对象无法访问时,密钥才有资格进行垃圾回收。