什么是内存泄漏(memory leak)?
指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。
如何避免?
尽量不使用大对象,大数组。尽量减小大对象,大数组的作用域。
Vector v = new Vector(10);
for (int i = 0; i<10; i++)
{
person o = new person();
v.add(o);
o = null;
}
虽然设o为null,但是由于v还在使用,所以不会回收new的10个对象。
java引用就是门牌号,内存空间就是房子实体,虽然o引用设为null了,但是里面还住着人尼(v还在引用尼),所以房子不会被回收了。