【发布时间】:2012-07-29 06:42:41
【问题描述】:
我读到了 Java is passed by value 。因此,假设我们有此代码,并说 HashMap somehashMap 的使用寿命比 foo 长。所以 foo 不允许被垃圾回收,即使它已经完成了它的工作,只是因为我们将 foo 放在 Map 中然后忘记从中删除。现在按照我链接到的帖子中答案的逻辑,我们实际上是将foo 的引用副本传递给put() 方法,对吗?在这种情况下,将foo 放入HashMap 应该不要阻止它收集垃圾。你能帮我理解这里发生了什么吗?我到底错过了什么?
public void someMethod(){
Foo foo = new Foo();
somehashMap.put(fooKey,foo);
}
【问题讨论】:
-
Foo与somehashMap具有相同的生命周期
标签: java memory-leaks