【发布时间】:2011-02-25 20:15:51
【问题描述】:
是否有一个简单、高效的Map 实现允许对地图使用的内存进行限制。
我的用例是我想在创建时动态分配大部分可用内存,但我不想在将来的任何时候使用OutOFMemoryError。基本上,我想将此地图用作缓存,但我想避免像EHCache 这样的大量缓存实现。我的需求很简单(最多一个LRU算法)
我应该进一步澄清,我的缓存中的对象是char[] 或类似的原语,它们不会包含对其他对象的引用。
我可以为每个条目设置最大大小的上限。
【问题讨论】:
-
根据我对您问题的理解,您的想法是在启动时分配专用的内存量用于缓存。这样做的问题是,您无法提前知道内存的类型(我们在这里谈论的是缓存对象,对吗?)。与 C 不同,您不能简单地分配一个内存块,然后将指针转换为要被视为对象 X 的子部分。因此,对于通用解决方案,固定内存缓存在 Java 中不实用。此外,您认为这可以保护您免受 OutOfMemoryErrors 的影响充其量是值得怀疑的。
标签: java caching dictionary memory-management fixed