HashMap中的20MB文本文件出现Android Out Of Memory错误

时间:2014-12-23 13:42:45

标签: java android out-of-memory

(初学Android问题:) 我将一个25MB的同义词库文本文件加载到HashMap中,但是我得到了一个Out Of Memory致命异常。我已经研究过这个网站,以寻找其他方法的想法,但我仍然不确定。 将文本文件拆分成多个较小的文件(比如26,每个字母一个),然后根据程序的需要从文本文件中读取到HashMap是否明智?有没有更好的方法来做到这一点? 该应用程序旨在显示用户输入的单词的所有同义词。

12-23 13:04:44.336: E/AndroidRuntime(9865): FATAL EXCEPTION: main
12-23 13:04:44.336: E/AndroidRuntime(9865): Process: com.example.dictfromtextfile, PID: 9865
12-23 13:04:44.336: E/AndroidRuntime(9865): java.lang.OutOfMemoryError: Failed to allocate a 6532 byte allocation with 4262 free bytes and 4KB until OOM
12-23 13:04:44.336: E/AndroidRuntime(9865):     at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:95

1 个答案:

答案 0 :(得分:0)

强烈建议不要立即将整个文件加载到内存中,这会导致OutOfMemoryException错误,具体取决于您使用的设备。您可以使用SQLite数据库来存储数据并对其执行数据库操作以搜索,插入或删除数据。

如果您希望将数据存储在文本文件中,可以使用BufferedReader使用readLine()方法逐行读取文件(仅将每行加载到内存中)需要)。然后,您可以使用自己的类来包装它,以启用所需的所有功能,例如搜索。