gpt4 book ai didi

Java固定内存映射

转载 作者:搜寻专家 更新时间:2023-10-30 19:56:02 24 4
gpt4 key购买 nike

是否有一个简单、高效的 Map 实现,允许限制 map 使用的内存。

我的用例是我想在创建时动态分配大部分可用内存,但我不想在以后任何时候出现 OutOFMemoryError。基本上,我想将此 map 用作缓存,但我想避免像 EHCache 这样的重型缓存实现。我的需求很简单(顶多一个LRU算法)

我应该进一步澄清,我的缓存中的对象是 char[] 或类似的原语,它们不会保存对其他对象的引用。

我可以为每个条目设置最大大小的上限。

最佳答案

您可以使用 LinkedHashMap 限制 Map 中的条目数:

removeEldestEntry(Map.Entry<K,V> eldest): Returns true if this map should remove its eldest entry. This method is invoked by put and putAll after inserting a new entry into the map. It provides the implementor with the opportunity to remove the eldest entry each time a new one is added. This is useful if the map represents a cache: it allows the map to reduce memory consumption by deleting stale entries.

Sample use: this override will allow the map to grow up to 100 entries and then delete the eldest entry each time a new entry is added, maintaining a steady state of 100 entries.

private static final int MAX_ENTRIES = 100;

protected boolean removeEldestEntry(Map.Entry eldest) {
return size() > MAX_ENTRIES;
}

相关问题

关于Java固定内存映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2941283/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com