java - 安卓Sqlite数据库内存溢出

 不可能爱你啊 发布于 2022-10-27 15:32

错误日志如下:
2016-09-30 01:29:59 E/IMemory ( 1187): cannot map BpMemoryHeap (binder=0xbecdfee8), size=462848, fd=74 (Out of memory)

2016-09-30 01:29:59 F/libc ( 1187): Fatal signal 11 (SIGSEGV) at 0xffffffff (code=1), thread 1199 (Binder_2)

2016-09-30 01:29:59 E/CursorWindow( 1187): Could not allocate CursorWindow '/data/data/../**.db' of size 2097152 due to error -1
2.
2016-09-30 01:29:59 E/getDataNums( 1187): Cursor window allocation of 2048 kb failed.

代码如下:

SQLiteDatabase db = dbOpenHelper.getReadableDatabase();

    List kidList=new ArrayList<>();
    if(db.isOpen()) {
        Cursor cursor = null;
        try {
            if (TextUtils.isEmpty(CurClassId)) {
                cursor = db.query("KidList", null, null, null, null, null, null);
            } else {
                cursor = db.query("KidList", null, "class_id = ?", new String[]{CurClassId}, null, null, null);
            }
            if (cursor.moveToFirst()) {
                do {
                    KidListModel kid = new KidListModel();
                    kid.setId(cursor.getString(cursor.getColumnIndex("kid")));
                    kid.setName(cursor.getString(cursor.getColumnIndex("name")));
                    kid.setSafe_gate_pic(cursor.getString(cursor.getColumnIndex("safe_gate_pic")));
                    kid.setClass_id(CurClassId);
                    kidList.add(kid);
                } while (cursor.moveToNext());
            }
        } catch (Exception e) {
            Log.e("loadClassKids", e.getMessage());
        } finally {
            if (cursor != null) {
                cursor.close();
            }
        }
    }
    return kidList;

sqlite已经有单例化:
public synchronized static SignDataBase getInstance(Context context){

    if (signDataBase == null){
        signDataBase = new SignDataBase(context);
    }
    return signDataBase;
}
1 个回答
  • finally {
                if (cursor != null) {
                    cursor.close();
                }
                // 加上以下程式:
                if (db != null) {
                    db.close();
                }
            }
    2022-10-28 14:14 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有