1.内存泄漏
内存泄漏有两种情况第一种是 分配出去的内存没有收回来,由于疏忽没能释放已经不再用的内存.因此造成了内存泄漏.
还有一种是内存对象明明已经不需要 使用的时候,仍然还保留着该对象的访问方式(引用).
举个例子:
Vector v = new Vector(10);
for(int i=0; i<100; i++){
Object o = new Object();
v.add(o);
o=null;
}
这里就发生了内存泄漏,代码中我们不断的生成Object对象,并把它放入Vector中.然后把Object对象置空,但是发生GC的时候我们只是把Object对象变成了空的,在Vector中仍然保存着Object对象的引用,依然可以访问到Object对象.所以就发生了内存泄漏.
2. 内存溢出
内存溢出就是程序运行时的内存超过了系统所能分配的范围.所以就发生了内存溢出.