适用于Android应用程序的HashMap替代品

Ero*_*rol 4 java android hashmap out-of-memory

我正在使用java.util HashMap的OOM问题所以我正在寻找标准Java Hashmap的内存友好HashMap替代品.我尝试了Trove并且它有所改进,但仍然不时地与OOM结束.如果内存有效,我可以适应一些速度损失.

我不是在找DB.只要它们脱机工作,基于文件的HashMap实现也很好.我正在存储像int和byte这样的原语.

此外,请说明您是否有任何经验以及您在记忆方面的改进程度.

jag*_*und 5

我可以想到两个对你有用的选项 - 这是最好的完全取决于你的应用程序.第一种是使用WeakReference或SoftReference.现在请记住,从Android 2.3开始,VM变得更加激进,因此收集VM可能会更频繁地收集这些类型的引用.就个人而言,我不是因为这个原因而使用这些类型的参考文献的忠实粉丝,但是有些人可能会争论不同.第二个选项,也是我建议的选项,是查看LRU缓存.您可以使用LinkedHashMap实现自己的LRU缓存.但是,如果您使用地图存储位图,我强烈建议您查看Android兼容包提供的位图缓存,其中包括位图缓存.这里有一些您可以用来阅读的链接:

弱参考

软参考

使用LinkedHashMap的LRU缓存

Android Bitmap Cache以及为什么要避免使用弱/软引用