我遇到了java.util Hashmap的OOM问题,所以我正在寻找内存友好的HashMap替代标准Java HashMap。我尝试过Trove,它有一点改进,但仍然时不时地出现OOM。如果内存是高效的,我可以适应一些速度损失。
我不是在找DB。基于文件的HashMap实现也很好,只要它们离线工作。我正在存储像int和byte这样的原语。
另外,请说明您是否有任何经验,以及您在记忆力方面有多大的进步。
发布于 2012-06-01 09:54:39
我可以想到两个适合您的选项--哪一个最好完全取决于您的应用程序。第一种是使用WeakReference或SoftReference。现在请记住,从Android2.3开始,VM变得更具侵略性,因此收集VM可能会更频繁地收集这些类型的引用。就我个人而言,我并不是出于这个唯一的原因而热衷于使用这些类型的引用,但有些人可能会有不同的观点。第二种选择,也是我推荐的一种,是查看LRU缓存。您可以使用LinkedHashMap实现自己的LRU缓存。但是如果你使用地图来存储位图,我强烈建议你看看Android兼容包提供的位图缓存,其中包括一个位图缓存。这里有几个你可以用来阅读的链接:
Weak References
Soft References
LRU Cache using LinkedHashMap
Android Bitmap Cache and why you should avoid Weak/Soft References
发布于 2015-08-17 14:55:04
你应该看看ArrayMap和SparseArray。这些是在android中使用HashMap的高效内存替代方案。
https://stackoverflow.com/questions/10843393
复制相似问题