对于此代码片段:
Vector v = new Vector(10);
for (int i = 1; i<100; i++)
{Object o = new Object();
v.add(o);
o = null;
}
因为这100个对象的所有引用都被设置为null,所以不会泄漏,因此它们将被GC收集。
然而,
Vector v = new Vector(10);
for (int i = 1; i<100; i++)
{Object o = new Object();
v.add(o);
}
v= null;
会有泄漏,因为我只是清空了对向量的引用,但是对这 100 个对象的所有引用仍然存在,因此在它们对系统没有用时不会被 GC 收集。
请帮助检查我是否正确理解 Java 中的内存泄漏,在此先感谢!