![]() |
1
6
如果你使用
我不知道Android上是如何工作的,但是对于Sun最近的JVM,可以使用-xx:SoftReflupolicyMSPermb命令行选项来调整SoftReference行为,该命令行选项决定了软访问对象在堆中每MB可用内存中保留的毫秒数。正如您所看到的,这将是非常困难的,以获得任何可预测的寿命行为,与增加的痛苦,这个设置是全局的所有软引用在虚拟机,不能单独调整为个别类的软引用的使用(可能是每个使用将需要不同的参数)。 制作LRU缓存的最简单方法是扩展LinkedHashMap as described here . 由于您需要线程安全性,最初扩展它的最简单方法是只使用 Collections.synchronizedMap 在该自定义类的实例上,以确保安全的并发行为。 注意提前优化——除非您需要非常高的吞吐量,否则粗同步理论上的次优开销不太可能是一个问题。好消息是,如果分析显示由于锁争用过多,您的运行速度太慢,那么您就可以获得足够的关于缓存运行时使用的信息,从而能够想出一个合适的无锁替代方案(可能基于ConcurrentHashMap和一些手动lru处理),而不必猜测它的负载配置文件。 |
![]() |
2
5
LinkedHashMap易于用于缓存。这将创建大小为10的MRU缓存。
我想你可以用这个Linkedhashmap的同步代理创建一个类。如果我对同步的理解有误,请原谅我。 |
![]() |
3
1
www.javolution.org有一些有趣的功能——同步快速收藏。 在您的情况下,它值得一试,因为它还提供一些漂亮的增强小设备作为Android的。 |
![]() |
4
1
对于同步, Collections 框架提供同步映射:
然后可以包装它,或者在缓存对象中处理LRU逻辑。 |
![]() |
5
0
我喜欢Apache Commons Collections Lrumap |
![]() |
TheKing · 为什么数组的地址可以有负值? 3 年前 |
![]() |
yurnero · MATLAB:“加载”一个快速访问功能 7 年前 |
![]() |
joe · 一页可以同时在两个工作集中吗? 7 年前 |
![]() |
Jaques · “.exe”已触发断点 7 年前 |
![]() |
adn bps · 在函数中修改变量的高效内存方法 7 年前 |
![]() |
Gauraang Khurana · C语言中分段错误的不稳定行为 7 年前 |
![]() |
Rajesh K · 如何查找设备中存在的广告垃圾? 7 年前 |