我一直在经历the following tutorial,我碰到这个代码就来了:新到Java - 新的String()和关系WeakHashMap中
map.put(new String("Maine"), "Augusta");
只是为了试验,我把它改为:
String hold = "Maine";
map.put(hold, "Augusta");
因此,循环会永远持续下去,这意味着此对象不会因为它应该收集垃圾,因为我们正在使用WeakHashMap。我不知道这是为什么。是什么使得在这种情况下新的String()与String不同?
也..还有一个问题 - 为什么这个地图必须是静态的或否则containsKeys会给出错误?
明白了,谢谢,怎么还有一个问题 - 为什么这个映射必须是静态的,否则containsKey会给出错误? – user3134565
@ m0skit0是完全正确的,你应该说''缅因州''是_eventually_垃圾收集。不一定是这种情况马上就会发生。它甚至可能不会发生。 – gexicide
@gexicide当GC运行时,它会在垃圾收集时发生。让我们尽量不要太迂腐;) – m0skit0