LRU LinkedHashMap根据可用内存限制大小
我想创建一个LinkedHashMap,它将根据可用内存(即,当freeMemory + (maxMemory -
allocatedMemory)低于某个阈值时)限制其大小。这将用作缓存的一种形式,可能使用“最近最少使用”作为缓存策略。
不过,我担心的是,allocatedMemory还包括(我认为)垃圾回收的数据,因此将高估已使用的内存量。我担心这可能会带来意想不到的后果。
例如,LinkedHashMap可能会继续删除项目,因为它认为没有足够的可用内存,但是可用内存却没有增加,因为这些删除的项目没有立即被垃圾回收。
有人对这种事情有经验吗?我的担心值得吗?如果是这样,谁能建议一个好的方法?
我还要补充一点,我也希望能够“锁定”缓存,基本上说“好的,从现在开始,不要因为内存使用问题而删除任何内容”。
回答:
我知道我有偏见,但我确实必须为此强烈推荐我们的MapMaker。使用softKeys()或softValues()功能,取决于它是密钥的GC集合还是更适合描述何时可清除条目的值的GC集合。
以上是 LRU LinkedHashMap根据可用内存限制大小 的全部内容, 来源链接: utcz.com/qa/411893.html