java - 所有java对象都保存在内存中直到以某种方式被销毁吗?

标签 java android class object

我有一个使用数据库的 Android 应用程序。我创建的 db 类将迭代数据库并使用单独的类来“HOLD”?每行。

public List<Poster> getAllPosters() {
    List<Poster> posterList = new ArrayList<Poster>();
    // Select All Query
    String selectQuery = "SELECT * FROM " + "posters";

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            Poster poster = new Poster(Integer.parseInt(cursor.getString(0)),Integer.parseInt(cursor.getString(1)),Integer.parseInt(cursor.getString(2)),cursor.getString(3),cursor.getString(4),cursor.getString(5),cursor.getString(6),cursor.getString(7),cursor.getString(8));

            // Adding contact to list
            posterList.add(poster);
        } while (cursor.moveToNext());
    }
    db.close(); // Closing database connection
    // return contact list
    return posterList;
}

海报类正如您所期望的那样。它有一个构造函数,其中每个变量都与列相关,以及一个设置和获取每个列值的方法。

那么现在每一行都是可以随时访问的自己的对象,还是作为对象的 Poster 类并且包含所有行?

此外,在应用程序终止或被 Poster 的新实例覆盖之前,该对象是否一直在内存中?

最佳答案

您创建多个 Poster 对象(Poster 类的实例)

Poster poster = new Poster( ... );

并将它们存储在 posterList 中(海报对象列表,List<Poster>)

posterList.add(poster);

然后返回列表

return posterList;

您可以使用此列表通过以下方法访问检索到的对象:posterList.get(0)

创建的对象将存储在内存(堆上)中,直到被垃圾收集器删除。但是,如果您持有对它的引用,垃圾收集器将不会删除任何内容。在您的示例中,引用保存在 posterList 中所以不Poster对象将被删除,直到您清除列表或删除对列表本身的所有引用。

关于java - 所有java对象都保存在内存中直到以某种方式被销毁吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27409527/

相关文章:

javascript - 为什么我的类构造变量在声明后保持未定义状态?

java - 具有不同 JPA 实现的数据库类型的不同映射

java - Vertx ( vertx-Junit5 模块 ) 没有找到测试

java - 在 SQLite Android 中保存元素

android - 在不启动新 Activity 的情况下在 URL 更改(自定义方案)上运行代码

java - 在一个类中使用 ActionListener 来启动另一个类中的计时器

java线程间共享数据

解析嵌套表达式的java方法

android代码使用for循环多次点击按钮

c++ - 调用由另一个没有名称的类创建的类对象