Android数据库内存问题mSize = 1048576

时间:2012-07-13 20:23:16

标签: android sqlite uri blob

我想从数据库中获取一个blob。我收到这个错误。我是数据库新手,这是什么意思?

07-13 22:21:10.928:E / CursorWindow(13302):需要增长:mSize = 1048576,size = 3279360,freeSpace()= 1048491,numRows = 1

似乎我只有1MB。这是对数据库的限制,还是我的完整应用目前仅限于1MB可用内存?

我没有遇到将blob插入数据库的问题。然后我关闭了数据库等...我很高兴,如果有人可以给我一些地方,我可以看看。

最诚挚的问候,

帕特里克

3 个答案:

答案 0 :(得分:1)

1MB限制适用于Cursor BLOB数据。由于该限制适用于Cursor,因此您不会看到它插入数据,只会尝试访问它。

通常,将数据块放入数据库中是一个坏主意。相反,您应该将大数据保存到内部或外部存储上的文件中,并将文件路径或Uri保存到数据库字段中。

答案 1 :(得分:1)

在SQLite数据库中存储大文件是不好的做法。存储指向该文件的Uri

答案 2 :(得分:0)

这是因为要保存的变量太大而光标无法处理

以我的日志摘录为例

07-08 10:39:51.324: W/CursorWindow(9207): Window is full: requested allocation 1249663 bytes, free space 398939 bytes, window size 2097152 bytes

我建议使用callong分离的方法分别逐个调用blob或长字符串,因为我们无法保证Android操作系统本身只运行此应用程序,而另一个可以消耗大量内存