gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:01:31 25 4
gpt4 key购买 nike

我有一个使用数据库的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com