Android Sqlite 出现内存溢出的情况 ,求帮忙

CV战神 2016-09-27 11:01:21
一秒查询2次数据库 , 爆出 android.database.CursorWindowAllocationException : Cursor Window alloction of 2048 kb failed.



查询代码:
public static List<HeadInfo> queryHeadInfoByOrder(Context context, String order) {
SQLiteDatabase db = DBHelper.getSQLiteDb(context);
List<HeadInfo> list = new ArrayList<HeadInfo>();
String sql = "select * from head_info ";
// 查询数据
Cursor cursor = db.rawQuery(sql, null);
try {
while (cursor.moveToNext()) {
HeadInfo info = new HeadInfo();
info.setId(cursor.getString(cursor.getColumnIndex("id")));
info.setLink(cursor.getString(cursor.getColumnIndex("link")));
info.setLocationLink(cursor.getString(cursor.getColumnIndex("locationLink")));
info.setMediatype(cursor.getString(cursor.getColumnIndex("mediatype")));
info.setOrder(cursor.getString(cursor.getColumnIndex("sortorder")));
info.setStatus(cursor.getString(cursor.getColumnIndex("status")));
list.add(info);
}
} finally {
if(cursor != null)
cursor.close();
if(db != null)
db.close();
}
return list;
}
...全文
235 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
CV战神 2016-09-27
  • 打赏
  • 举报
回复
引用 1 楼 ink_s 的回复:
先查询表的数据量,如果过大,做分批处理 你这个是数据条数很多吗?
不大 , 就几条数据 , 就是查询的频繁了!! 我看网上说的是cursor未关闭 , ,造成内存不足 , 但是每个查询后都关闭了!
ink_s 2016-09-27
  • 打赏
  • 举报
回复
先查询表的数据量,如果过大,做分批处理 你这个是数据条数很多吗?
CV战神 2016-09-27
  • 打赏
  • 举报
回复
引用 3 楼 ink_s 的回复:
[quote=引用 2 楼 qq_24345297 的回复:] [quote=引用 1 楼 ink_s 的回复:] 先查询表的数据量,如果过大,做分批处理 你这个是数据条数很多吗?
不大 , 就几条数据 , 就是查询的频繁了!! 我看网上说的是cursor未关闭 , ,造成内存不足 , 但是每个查询后都关闭了![/quote] 可能是关闭也需要时间的 你这个虽然代码逻辑上是写了关闭了,但可能执行没成功又查询了[/quote] 嗯 , 也很有可能是这个样子!!谢谢
ink_s 2016-09-27
  • 打赏
  • 举报
回复
引用 2 楼 qq_24345297 的回复:
[quote=引用 1 楼 ink_s 的回复:] 先查询表的数据量,如果过大,做分批处理 你这个是数据条数很多吗?
不大 , 就几条数据 , 就是查询的频繁了!! 我看网上说的是cursor未关闭 , ,造成内存不足 , 但是每个查询后都关闭了![/quote] 可能是关闭也需要时间的 你这个虽然代码逻辑上是写了关闭了,但可能执行没成功又查询了

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧