良好的做法,以避免内存泄漏
我正在为android计算。 我试图小心内存泄漏,因为我的程序处理大量数据,垃圾收集器似乎非常繁忙。
我想知道是否有区别:
for (int i=0;i<200;i++)
{
MyObject myobject = new MyObject(i,i+1);
myobject.writeToDatabase();
}
和
MyObject myobject=null;
for (int i=0;i<200;i++)
{
myobject = new MyObject(i,i+1);
myobject.writeToDatabase();
}
和(避免使用构造函数)
MyObject myobject=new MyObject(0,1);
myobject.writeToDatabase();
for (int i=1;i<200;i++)
{
myobject.setFirstValue(i);
myobject.setSecondValue(i+1);
myobject.writeToDatabase();
}
谢谢 !!
第三种选择是迄今为止最好的。 在这种情况下,其他两个选项在Java中几乎完全相同。
如果你不是每次都创建一个新对象,而是再次使用一个新对象,那么你正在减轻垃圾收集器的大量工作。 这是让性能和内存管理更高效的好方法。
在两个第一个选项中,你基本上是做同样的事情:在循环开始时创建一个新对象,并让它在循环结束时被销毁。 事实上,你继续使用指针相同的变量没有太大的区别。
编辑:
正如随机说的,你的代码不会导致任何内存泄漏,只是因为垃圾回收器会确保不会发生。 我猜测有一些技巧会导致内存泄漏,但在正常情况下不会发生。 但正如我所解释的,您仍然有办法通过使用更少的对象来提高垃圾回收效率。
链接地址: http://www.djcxy.com/p/19831.html上一篇: Good practise to avoid memory leak
下一篇: Is there a way to avoid undeployment memory leaks in Tomcat?