Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 内存不足错误_Android_Csv_Out Of Memory - Fatal编程技术网

Android 内存不足错误

Android 内存不足错误,android,csv,out-of-memory,Android,Csv,Out Of Memory,目前,我正在开发一个Android应用程序,需要将Csv文件中的数据插入数据库。该Csv文件包含超过250万个数据 有没有办法将Csv文件直接转换为.db格式 信息:Csv文件的大小为8MB 我尝试的是: 最初,我尝试在我的应用程序中解析Csv文件,插入1000个数据,并成功地完成了这项工作。但在检索和存储列表中的数据时,我遇到了OutOfMemoryError 有什么办法把它整理出来吗?你不应该一次将整个文件加载到内存中。使用流式处理方法,逐行处理文件(例如使用LineNumberReader

目前,我正在开发一个Android应用程序,需要将Csv文件中的数据插入数据库。该Csv文件包含超过250万个数据

有没有办法将Csv文件直接转换为.db格式

信息:Csv文件的大小为8MB

我尝试的是:

最初,我尝试在我的应用程序中解析Csv文件,插入1000个数据,并成功地完成了这项工作。但在检索和存储列表中的数据时,我遇到了OutOfMemoryError


有什么办法把它整理出来吗?

你不应该一次将整个文件加载到内存中。使用流式处理方法,逐行处理文件(例如使用
LineNumberReader
),并单独处理每一行,这样JVM只能在RAM中保留实际的行

您还可以使用成批,比如1000行,一次处理。这使您能够在保持最小内存占用的同时提高速度(应进行更少的db事务)


还要尽量提高对象的重用率,避免不必要的创建。

什么是
250万
?您是如何读取该文件的?
2.5lahks
读起来像是
bazzilions
确实是>)250000个字符串对象。是的,我尝试了,但它花费了太多时间,所以我创建了另一个包含1000个数据的文件。实际上,当我在列表中存储1000个对象时,问题就会出现。实际上,当我在列表中存储1000个对象时,问题就会出现。有类似的情况吗ArrayList对象只能存储有限数量的数据?内存泄漏是否导致内存不足错误?如果是,则向列表中添加对象是否会导致内存泄漏?不要永远将对象存储在列表中。在csv文件的每100行之后刷新列表(使用
list.clear()
)。你得到OOE不是因为内存泄漏,而是因为android的内存(堆?)限制。