我试图了解内存泄漏的各种原因我看到的样本中的hashCode()实现了而不是equals().我已经读完了那个,如果一个人被过度骑行,另一个也因为违反合同而被过度骑行.
这是示例代码
import java.util.HashMap;
import java.util.Map;
public class MemoryLeak {
static class Key {
Integer id;
Key(Integer id) {
this.id = id;
}
@Override
public int hashCode() {
return id.hashCode();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Map m = new HashMap();
while (true)
for (int i = 0; i < 10000; i++)
if (!m.containsKey(i))
m.put(new Key(i), "Number:" + i);
}
}
我知道我没有故意实现equals()方法.但我想知道为什么会在内部发生内存泄漏.
谢谢