Java和Android中对象的范围和破坏

时间:2015-12-23 17:30:44

标签: java android performance greendao

在我的Android应用程序的第一次启动(安装之后)期间,我创建了近1000个对象,然后通过greenDAO ORM将它们保存在SQLite数据库中。我是Java编程的新手,我想问一下我是否可以通过放入括号来获得更好的性能,以便通过垃圾收集器调用对象销毁。

代码是:

Foo foo1 = new Foo();
Foo foo2 = new Foo();
Foo foo3 = new Foo();
Foo foo4 = new Foo();
.
.
.
Foo foo1000 = new Foo();

通过范围销毁内存中对象的想法是:

{
   Foo foo1 = new Foo();
   Foo foo2 = new Foo();
}
{
    Foo foo3 = new Foo();
    Foo foo4 = new Foo();
}
{
    .
    .
    .
    Foo foo1000 = new Foo();
}

所以我的想法是垃圾收集器在传递每个括号后立即释放内存中的对象。如果这不是正确的方法,那么您在这种情况下获得更好性能的建议是什么?

2 个答案:

答案 0 :(得分:4)

在你的情况下,如果你不需要同时持有你的类的多个实例,你也可以创建一个对象并重复使用1000次。

Foo my_foo = new Foo();

for(int i = 0; i < 1000; i ++){
    my_foo.setValue(i);
    saveToDB(my_foo);
}

答案 1 :(得分:0)

如果始终创建这1000个对象,则可能需要使用预先填充的数据库分发应用程序。有一个很好的SQLiteAssetHelper库可以做到这一点。