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表的数据量,如果过大,做分批处理,每次处理一定量的数据,避免读取更多数据造成内存溢出。
分享到:
相关推荐
在IT行业中,SQLite是一个轻量级的、无服务器的、自包含的SQL数据库引擎,它被广泛用于嵌入式系统和Web应用中。PHP是一种流行的开源脚本语言,尤其适用于Web开发,它能够轻松地与各种数据库进行交互,包括SQLite。在...
假设我们有一个名为"Users"的表,想要读取所有记录: ```csharp SQLiteCommand cmd = new SQLiteCommand("SELECT * FROM Users", conn); SQLiteDataReader reader = cmd.ExecuteReader(); ``` 使用...
原来一次性向数据库里插入数据的条数不能太多,上限是500条。超出会报错。 解决方案就是只好分多次插入数据库了。 您可能感兴趣的文章:SQLite教程(八):命令行工具介绍SQLite教程(十二):锁和并发控制详解...
一次性全量读取是将所有数据一次性从数据库中取出,然后插入到控件中,这种方法适用于数据量较小的情况,但面对七万条以上的数据,会明显影响性能。分页读取则是每次只加载一部分数据,用户滚动时再加载更多,虽然比...
SQLite是一款开源、无服务器、零配置、事务性的SQL数据库引擎,适用于嵌入式环境,无需额外的安装或管理。它支持标准的SQL语法,并且提供了多种语言的API,包括C#,使得与.NET框架如WPF的集成变得简单。 二、WPF与...
SQLite是一个轻量级的、开源的、独立的数据库管理系统,广泛应用于嵌入式系统和移动应用。SQLite支持多种数据库格式,其中"SQLite format 3"是最新的版本,具有高效、可靠的特点。在C#编程环境下,可以利用.NET ...
数据库查询是应用程序与数据交互的重要环节,当一次性从数据库中获取的数据量过大时,可能会导致内存溢出(Memory Overflow)问题。内存溢出是程序在申请内存时,无法在分配到足够的内存空间来完成操作,这通常是...
在本文中,我们将深入探讨如何在Delphi编程环境中利用SQLite3数据库系统,特别是关于本地数据库与内存数据库的使用。SQLite3是一种轻量级、自包含的数据库引擎,它不需要独立的服务器进程,使得在Delphi应用程序中...
自己写的业务工作用的一个资料查询实例,输入机号7088,可查询飞机公司代码和名称,并显示改飞机图片。用了zeos控件,这是个完整的sqlite桌面数据查询实例,图片以Bolb数据格式存储在数据库里,供初学参考。
SQLite则是一个轻量级、开源的嵌入式关系数据库,广泛应用于各种平台,包括Web应用程序。在ASP中连接SQLite数据库,主要涉及到ODBC(Open Database Connectivity)驱动的使用,因为ASP默认支持ODBC接口来连接多种...
这个场景中,我们讨论的是如何在Windows和Linux环境下利用SQLite3通过读取XML文件自动生成内存表和硬盘表。 首先,XML文件是一种结构化的数据存储格式,通常用于数据交换或配置。在本例中,XML文件`collect_5k_...
本文将详细介绍如何使用Python读取TXT文件中的数据,并将其存储到SQLite3数据库中,同时也会涉及数据库的基本操作,如创建表、插入数据以及查询数据。 首先,我们需要导入`sqlite3`模块,这是Python标准库的一部分...
在.NET开发环境中,C#是一种常用的编程语言,而SQLite则是一种轻量级的、无服务器、自包含的数据库引擎,广泛应用于嵌入式系统和移动应用。本示例重点讲解了如何利用C#与SQLite数据库交互,特别是涉及到图片数据的...
System.Data.SQLite.DLL 是一个用于 .NET Framework 的 SQLite 数据库引擎的 ADO.NET 提供程序。这个库使得 C# 开发者能够方便地在他们的应用程序中集成 SQLite 数据库的读写功能。SQLite 是一个轻量级、开源的关系...
SQLite内存数据库,顾名思义,是指SQLite数据库在运行时存储于内存而非硬盘中的一种模式。这种模式下的数据库称为临时数据库,所有的数据只存在于运行期间,一旦数据库连接关闭,所有数据将自动清除。内存数据库的...
在我们的例子中,提到的"sqlite文件读取工具 1.0.0.4版"是一个专门用于解析SQLite数据库文件的应用程序,能够提取出一些常规SQLite开源库无法获取的信息。 SQLite数据库文件的内部结构分为多个区段,如页表、自由页...
同时,我们还将介绍一个名为CSqlite的实用操作类,该类简化了与SQLite的交互,包括读取返回内容和获取返回头等信息。 首先,让我们了解SQLite的基本概念。SQLite是一个开源的、自包含的、完全事务性的SQL数据库引擎...
根据公司项目需求,学习了EF框架读取SQLITE数据库和FREESQL框架读取SQLITE数据库,这两种数据库的读取方式和效率,写了一个DEMO程序,也在学习和了解这两个方式的朋友可以下载参考一下。程序和源码都可以正常运行。...
标题提到的“用于读取SQLite书库的c++Lib”很可能就是一个这样的库,旨在帮助C++程序员更加高效、便捷地操作SQLite数据库。 C++库通常会提供面向对象的API,将数据库连接、查询、事务等操作封装为类或函数,使得...
本文将深入探讨如何实现一个高效、安全的网络图片加载机制,结合双缓存策略,确保图片加载过程既快速又不会导致内存溢出(Out Of Memory, OOM)。 首先,我们要理解为什么需要异步加载。在Android中,如果在主线程...