具有"对象到期"的对象缓存数据结构

mjn*_*mjn 4 java collections caching data-structures

Java中的哪种数据结构最适合实现内存中对象缓存,其中对象具有单独的到期时间?

基本上对于缓存我可以使用Map(其中key可以是String),它提供put和get方法,并使用"timestamp"+"object"对的有序列表来管理到期时间.因此,清理线程可以检查第一个列表条目,并在其到期时间过后删除该对象.(删除第一个元素应该在O(1)时间内)

Jon*_*han 11

您所描述的构建基本上是ExpiringMap.还有其他类似的实现,例如Guava(参见CacheBuilder) - 尽管我不相信它支持ExpiringMap的每个条目到期.


Dan*_*ker 6

缓存框架现在非常成熟:

但是,如果您坚持重新发明轮子,请记住考虑内存利用率.我经常看到一个严重实现的缓存(HashMap)有效地变成了内存泄漏.

请参阅Cowan的答案:Java的WeakHashMap和缓存:为什么它引用键而不是值?