Java和Android中对象的范围和销毁

Java和Android中对象的范围和销毁,java,android,performance,greendao,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();

在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();
}

因此,我的想法是垃圾收集器在通过每个括号后立即从内存中释放对象。如果这不是正确的方法,您对在这种情况下实现更好的性能有何建议?

如果这1000个对象总是以相同的方式创建,您可能希望使用预填充的数据库分发应用程序。有一个很好的库可以做到这一点。

如果这1000个对象总是创建相同的对象,那么您可能希望使用预填充的数据库分发应用程序。有一个很好的库可以做到这一点。

在您的例子中,如果您不需要同时保存类的多个实例,那么您最好创建一个对象并重复使用1000次

Foo my_foo = new Foo();

for(int i = 0; i < 1000; i ++){
    my_foo.setValue(i);
    saveToDB(my_foo);
}
Foo my_Foo=new Foo();
对于(int i=0;i<1000;i++){
我的_foo.setValue(i);
saveToDB(my_foo);
}

在您的情况下,如果您不需要同时保存类的多个实例,那么您最好创建一个对象并重复使用1000次

Foo my_foo = new Foo();

for(int i = 0; i < 1000; i ++){
    my_foo.setValue(i);
    saveToDB(my_foo);
}
Foo my_Foo=new Foo();
对于(int i=0;i<1000;i++){
我的_foo.setValue(i);
saveToDB(my_foo);
}

在我的场景中,我使用的是greenDAO,此ORM不支持预填充数据库。您可以在程序中创建一次Green DAO数据库,然后将其用作预填充数据库。通过adb Pull从手机中拉出它,然后用它创建一个预填充数据库。在我的场景中,我使用的是greenDAO,此ORM不支持预填充数据库。您可以在程序中创建一次Green DAO数据库,然后将其用作预填充数据库。通过adb Pull从手机中拉出它,然后用它创建一个预填充的db。更频繁地调用GC不会提高性能。它可以通过用更短的GC操作替换一些长GC操作来提高感知性能(平滑度),但总体执行时间会增加。更频繁地调用GC不会提高性能。它可以通过将一些较长的GC操作替换为较短的GC操作来提高感知性能(平滑度),但总体执行时间将增加。