2011-01-10 142 views
2

我正在使用从LinkedHashMap扩展的映射来实现缓存(所以我可以实现removeEldestEntry)。旧的实现使用了一个常规哈希映射,以设定的时间间隔刷新。我想知道如何将数据保存在缓存中。我怀疑我只能在特定的时间刷新而不会搞乱LRU。在数据库中查询条目上的时间戳是否特别昂贵?刷新LRU缓存

+0

http://download.oracle.com/javase/1.4.2/docs/api/java/util/LinkedHashMap.html#removeEldestEntry%28java.util.Map.Entry%29 EldestEntry是_number based_,而不是time-根据。在LRU中,你希望有一个最小生存时间 - 一个时间限制,EledestEntry限制长度 - 一个大小的限制。我想知道,你打算如何使用EldestEntry来实现LRU? – Nishant 2011-01-10 18:36:28

+0

@Nishant,我的印象是LRU简单地管理了什么被删除了,而不是什么时候。当我打到我的尺寸约束时,我想删除最近使用最少的对象。 – 2011-01-10 18:50:42

回答

0

我结束了LinkedHashMap,按访问时间排序,并根据db检查时间戳。这工作像一个魅力,并大大减少了应用程序的内存负载。

1

为什么不使用OS Cache - 重新发明车轮没有意义。