当前位置: 首页 > 面试题库 >

LRU LinkedHashMap根据可用内存限制大小

闻人冷勋
2023-03-14
问题内容

我想创建一个LinkedHashMap,它将根据可用内存(即,当freeMemory + (maxMemory - allocatedMemory)低于某个阈值时)限制其大小。这将用作缓存的一种形式,可能使用“最近最少使用”作为缓存策略。

不过,我担心的是,allocatedMemory还包括(我认为)垃圾回收的数据,因此将高估已使用的内存量。我担心这可能会带来意想不到的后果。

例如,LinkedHashMap可能会继续删除项目,因为它认为没有足够的可用内存,但是可用内存却没有增加,因为这些删除的项目没有立即被垃圾回收。

有人对这种事情有经验吗?我的担心值得吗?如果是这样,谁能建议一个好的html" target="_blank">方法?

我还要补充一点,我也希望能够“锁定”缓存,基本上说“好的,从现在开始,不要因为内存使用问题而删除任何内容”。


问题答案:

我知道我有偏见,但我确实必须为此强烈推荐我们的MapMaker。使用softKeys()或softValues()功能,取决于它是密钥的GC集合还是更适合描述何时可清除条目的值的GC集合。



 类似资料:
  • 本文向大家介绍cgroup限制mongodb进程内存大小,包括了cgroup限制mongodb进程内存大小的使用技巧和注意事项,需要的朋友参考一下 以限制mongodb的内存大小为例。 通过cgroup限制后,当内存达到限额,进程会被kill。 数据查询脚本: 数据插入脚本:

  • 本文向大家介绍jvm最大内存限制多少?相关面试题,主要包含被问及jvm最大内存限制多少?时的应答技巧和注意事项,需要的朋友参考一下 考察点:JVM (1)堆内存分配 JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小 于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到

  • 问题内容: 对于我的应用程序,Java进程使用的内存远远大于堆大小。 容器运行所在的系统开始出现内存问题,因为容器占用的内存比堆大小大得多。 堆大小设置为128 MB(-),而容器最多占用1GB的内存。正常情况下需要500MB。如果docker容器的限制低于(例如),则该进程将被操作系统的内存不足杀手杀死。 你能解释一下为什么Java进程使用的内存比堆多得多吗?如何正确调整Docker内存限制的大

  • 问题内容: 我有点担心可以在共享计算机上使用的资源量。有什么方法可以测试管理员对我可以使用的资源量是否有限制?如果可以的话,为了提出更完整的问题,我该如何设置这种限制? 谢谢。 问题答案: 对于与流程相关的限制,您可以浏览一下(阅读文件中的注释,使用google或使用以获得更多信息)。而且正如jpalecek指出的那样,您可以用来查看(并可能修改)所有当前有效的限制。 您可以使用该命令查看磁盘配额

  • 问题内容: 我正在尝试找到一种方法来限制Python VM可用的内存,就像Java VM中的选项“ -Xmx”一样。(这个想法是为了能够处理MemoryError异常) 我不确定该选项是否存在,但是可能存在使用操作系统命令“隔离”进程及其内存的解决方案。 谢谢。 问题答案: 在* nix上,您可以使用该命令,特别是-m(最大内存大小)和-v(虚拟内存)。