我读到Java 是按值传递的。所以假设我们有这个代码,并说它的HashMap somehashMap
生命周期比foo
. 所以 foo 不允许被垃圾回收,即使它已经完成了它的工作,只是因为我们把 foo 放在 Map 中然后忘记从中删除。现在按照我链接到的帖子中答案的逻辑,我们实际上是在传递foo
对方法的引用的副本,put()
对吗?在这种情况下,将其foo
放入HashMap
不应阻止它被垃圾收集。你能帮我理解这里发生了什么吗?我到底错过了什么?
public void someMethod(){
Foo foo = new Foo();
somehashMap.put(fooKey,foo);
}