我遇到了 java.util HashMap 的 OOM 问题,所以我正在寻找内存友好的 HashMap 替代标准 Java Hashmap。我尝试了 Trove,它有所改进,但仍然时不时出现 OOM。如果内存有效,我可以适应一些速度损失。
我不是在寻找数据库。只要离线工作,基于文件的 HashMap 实现也很好。我正在存储 int 和 byte 等原语。
另外,请说明您是否有过任何经验,以及您在内存力方面有多大进步。
最佳答案
我可以想到两个适合您的选项——哪个是最好的完全取决于您的应用程序。 第一种是使用 WeakReference 或 SoftReference。现在请记住,从 Android 2.3 开始,VM 变得更加激进,因此收集 VM 可能会更频繁地收集这些类型的引用。就我个人而言,出于这个唯一原因,我并不是很喜欢使用这些类型的引用资料,但有些人可能会有不同的看法。 第二种选择,也是我推荐的一种,是查看 LRU 缓存。您可以使用 LinkedHashMap 实现自己的 LRU 缓存。但是,如果您使用 map 来存储位图,我强烈建议您查看由 Android 兼容包提供的位图缓存,其中包括位图缓存。 以下是您可以用来阅读的几个链接:
Android Bitmap Cache and why you should avoid Weak/Soft References
关于java - Android 应用程序的 HashMap 替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10843393/