(Android 初学者问题:) 我正在将 25MB 同义词库文本文件加载到 HashMap 中,但出现内存不足致命异常。我研究了这个网站,寻找其他方法来做到这一点,但我仍然不确定。 将文本文件拆分为多个较小的文件(例如 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
最佳答案
强烈不建议将整个文件立即加载到内存中,并且会引发 OutOfMemoryException
错误,具体取决于您使用的设备。您可以使用 SQLite 数据库来存储数据并对其执行数据库操作以搜索、插入或删除数据。
如果您希望将数据存储在文本文件中,可以使用 BufferedReader
使用 readLine()
方法逐行读取文件(仅在需要时将每一行加载到内存中)。然后,您可以用自己的类包装它,以启用您需要的所有功能,例如搜索。
关于java - Android 内存不足错误,HashMap 中出现 20MB 文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27621597/