Android 2.3.3
Eclipse Version: 3.7.0
LogCat
LogCat 报错信息:
03-15 11:34:43.163: ERROR/AndroidRuntime(17173): java.lang.OutOfMemoryError
03-15 11:34:43.163: ERROR/AndroidRuntime(17173): at android.database.CursorWindow.getString_native(Native Method) 、03-15 11:34:43.163: ERROR/AndroidRuntime(17173): at android.database.CursorWindow.getString(CursorWindow.java:329)
03-15 11:34:43.163: ERROR/AndroidRuntime(17173): at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:49)
03-15 11:34:43.163: ERROR/AndroidRuntime(17173): at com.tmall.nokia.db.RecordDBHelper.query(RecordDBHelper.java:140)
03-15 11:34:43.163: ERROR/AndroidRuntime(17173): at com.tmall.nokia.manage.RecordDBopt.get(RecordDBopt.java:80)
03-15 11:34:43.163: ERROR/AndroidRuntime(17173): at com.tmall.nokia.manage.RecordMessage.sendAll(RecordMessage.java:55)
03-15 11:34:43.163: ERROR/AndroidRuntime(17173): at com.tmall.nokia.Check.run(Check.java:456)
03-15 11:34:43.163: ERROR/AndroidRuntime(17173): at java.lang.Thread.run(Thread.java:1019)
同时有报错信息
03-15 11:30:21.763: ERROR/CursorWindow(17173): need to grow: mSize = 1048576, size = 37, freeSpace() = 5, numRows = 6974
03-15 11:30:21.773: ERROR/CursorWindow(17173): not growing since there are already 6974 row(s), max size 1048576
03-15 11:30:21.804: ERROR/Cursor(17173): Failed allocating 37 bytes for text/blob at 6973,3
或
03-15 11:34:40.463: ERROR/CursorWindow(4647): need to grow: mSize = 1048576, size = 72, freeSpace() = 18, numRows = 6974
03-15 11:34:40.473: ERROR/CursorWindow(4647): not growing since there are already 6974 row(s), max size 1048576
03-15 11:34:40.543: ERROR/CursorWindow(4647): The row failed, so back out the new row accounting from allocRowSlot 6973
03-15 11:34:40.543: ERROR/Cursor(4647): Failed allocating fieldDir at startPos 0 row 6973
发生错误原因分析:
读取数据库的缓存大约为1M,CursorWindow一次性打开数据太多,造成内存溢出。
数据库中Record表的数据较多,大概有两万条,从以上错误信息,可以看出,大约读取到6974条时报错。
解决办法:
先查询Record表的数据量,如果过大,做分批处理,每次处理一定量的数据,避免读取更多数据造成内存溢出。
分享到:
相关推荐
php读取SQLite数据库, php读取SQLite数据库,php读取SQLite数据库
原来一次性向数据库里插入数据的条数不能太多,上限是500条。超出会报错。 解决方案就是只好分多次插入数据库了。 您可能感兴趣的文章:SQLite教程(八):命令行工具介绍SQLite教程(十二):锁和并发控制详解...
WPF SQLite存储与读取二进制图片
visual studio2013,DEMO,完整源码,适用于读取SQLite format 3
Delphi使用SQLite3,包括本地数据库和内存数据库,本地数据库加载到内存,内存数据库备份到本地,使用sqlite simple delphi包装类。
根据公司项目需求,学习了EF框架读取SQLITE数据库和FREESQL框架读取SQLITE数据库,这两种数据库的读取方式和效率,写了一个DEMO程序,也在学习和了解这两个方式的朋友可以下载参考一下。程序和源码都可以正常运行。...
今天小编就为大家分享一篇完美解决因数据库一次查询数据量过大导致的内存溢出问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
自己写的业务工作用的一个资料查询实例,输入机号7088,可查询飞机公司代码和名称,并显示改飞机图片。用了zeos控件,这是个完整的sqlite桌面数据查询实例,图片以Bolb数据格式存储在数据库里,供初学参考。
安卓下使用sqlite3保存图片、读取图片
C#读取SQLite数据库源代码(包含sqlite.dll此dll是64位和32位通用版本)
最近于一次偶然机会,要不用sqlite开源库 ,手动对sqlite文件进行完全解析。 特写了此demo.用此软件可以取出一些sqlite开源库取不出的信息。 -_-
主要介绍了Python实现读取TXT文件数据并存进内置数据库SQLite3的方法,涉及Python针对txt文件的读取及sqlite3数据库的创建、插入、查询等相关操作技巧,需要的朋友可以参考下
这是一个C#.NET示例程序, 简单演示了如何使用C#操作SQLite数据库。同时演示了如何用C#讲图片二进制数据存储到数据库和从数据库读取图片二进制数据并显示在PictureBox.
一个用来读取sqlite db文件的小工具 一个用来读取sqlite db文件的小工具 一个用来读取sqlite db文件的小工具 SQLiteExpertPersonal.exe
通过读取xml文件,来自动建表,内存表和硬盘表。代码在window和liunx下通用。 对已经有的表如果同名同数据库,可以自动检测并补上字段。主键是不自动的,sqlite自身机制的缺陷性。
SQLite二次封装,希望有用
Sqlite基本操作,历史记录大于10条自动删除 String sql = "delete from user where" + " (select count(id) from user )> 9 and " + " id in (select id from user order by id desc limit " + " (select count...
高效的Sqlite使用json字符串,写入sqlite数据库和读取sqlite数据库中的json字段,源码中有源码和示例。不可多得!
虚拟列表等三种读取Sqlite数据的方法比较,七万多条数据,虚拟列表的优势还是另外两种难以匹敌的。
轻量级内存数据库管理工具SQLiteExpert。