本帖最后由 马德强 于 2011-12-13 18:24 编辑
Collection c=new HashSet();
Point p1=new Point(3,3);
Point p2=new Point(3,4);
Point p3=new Point(3,5);
c.add(p1);
c.add(p2);
c.add(p3);
p1.y=6;
c.remove(p1);
for(Iterator it=c.iterator();it.hasNext();)
{
System.out.println(it.next());
}
如果修改了 参与hashCode计算的y 值,就会导致修改后的p1.hashCode() 与修改前的hashCode() 值不一致。
这样就无法对p1进行删除操作 而造成内存泄露。
但是 仍然可以通过 Point temp =new Point(3,3); c.remove(temp); 来删除p1。遍历也没有问题。
这种情况算内存泄露吗?内存泄露到底指什么? |