【发布时间】:2011-03-17 19:22:42
【问题描述】:
我正在与这里的社区联系,以了解是否有一种方法可以将许多对象存储在 Java 映射结构 (> 500K) 中。我知道如果我使用 Java Collections API 并且我正在寻找其他解决方案(分布式缓存之外),我的应用程序将在某个时候超出其内存占用。我的意图是存储一些具有 Map
要求:
- 结构将是不可变的(一次加载到地图中)。仅读取权限。
- 对地图的访问需要相当快,但不是寻找低延迟检索,更关心在内存中存储和保留这些对象。
有没有人知道我可以利用这样一个库来实现这一点,或者有没有人遇到过一种解决方案,他们需要在 Java 中将许多对象加载到内存中?我很想听听您的反馈意见。
谢谢。
【问题讨论】:
-
您说结构将是不可变的,但添加了“主要读取访问权限”。允许进行哪些修改?
-
抱歉造成混淆...将“主要”替换为“仅”...将对象添加到地图后不会进行任何写入
-
从字符串到字符串列表的 500k 映射?是否有任何常见的字符串,即在值之间,或者键也出现在值中?
-
值之间没有公共字符串...假设它不必是 List
而是 List> ...并且还假设我需要存储500K+ 唯一键。 -
根据您的值的类型,将它们保持在堆外可能是合适的。在堆中会有一个从字符串到偏移量和长度的映射,它会指向一个内存映射的___Buffer。
标签: java dictionary memory collections