比如,下面的代码,据说循环的去创建对象,会造成内存泄露是么,那么如何做才可以避免呢。vector v=new vector();
for(int i=0;i<5;i++)
{
Object o=new Object();
v.add(o);
o=null;
}
for(int i=0;i<5;i++)
{
Object o=new Object();
v.add(o);
o=null;
}
Java内存泄漏指的是长期不释放无用对象的引用
这部分代码的作用是什么呢?所谓的泄露应该就是new Object()这个对象在出了语句块之后,就没有东西指向了,这些对象属于JVM会回收的那部分资源,应该不属于泄露,个人见解!
但是如果你把这个对象无休止的放入一个全局的对象中,就可能会造成内存溢出(说内存泄漏不太准确)。
比如你这里如果Vector v;是一个全局变量,在它的整个生命期内,你一直new对象往里面放的话,就可能会溢出。
如程序中,所示,既然对象o已经没用了,就别往Vector里放了。
我写代码使了一下。
Vector<a> aa=new Vector<a>();
for(int i=0;i<10000000;i++)
{
a x=new a();
aa.add(x);
x=null;
if(aa.size()==1000)//
aa.clear();//
}
可以运行,没有问题。
但是如果将最后两行注释掉,就会报错Exception in thread "main" java.lang.OutOfMemoryError: Java heap space。楼主可以自己试一下