什么是内存泄露:指一片内存不在需要使用或者无法访问时,但是没有释放。
首先,针对于java的机制而言,因为所有的对象都有引用,没有引用或者不可达的对象都会被GC回收,这样,所有的内存对象都可以找到
它的引用,也就是都可以使用,所以不存在真正意义上的内存泄露。
Vector v=new Vector(10);
for (int i=1;i<100; i++)
{
Object o=new Object();
v.add(o);
o=null;
}
首先,针对于java的机制而言,因为所有的对象都有引用,没有引用或者不可达的对象都会被GC回收,这样,所有的内存对象都可以找到
它的引用,也就是都可以使用,所以不存在真正意义上的内存泄露。
如果非要说java存在内存泄露,那么,重新定义一下java内存泄露。
当然,可以用下面的代码来实现:
Vector v=new Vector(10);
for (int i=1;i<100; i++)
{
Object o=new Object();
v.add(o);
o=null;
}
同样可以看出,不是真正的内存泄露,因为所有的内存对象,都可以再通过vector再重新获得。当然,如果后续程序不再使用vector,则可以定义为java内存泄露。如果将vector置为null,则可以释放vector持有的所有内存空间。
更多参见第二篇文章:http://blog.csdn.net/fufengrui/article/details/7569515