【发布时间】:2013-01-26 16:29:13
【问题描述】:
- 如果他们每个人都保证有一个唯一的密钥(生成和 由外部键控系统强制执行),其中 Map 实现是 适合我吗?假设这必须针对 仅并发查找(数据在 应用程序启动)。
- 这 3 亿个唯一键是否有正负 对分桶/碰撞的影响?
- 还有其他建议吗?
我的地图看起来像这样
Map<String, <boolean, boolean, boolean, boolean>>
【问题讨论】:
-
只是一个问题:您确定要在内存中的 Map 中存储 300M 这样的项目吗?如果是简单的 Map
,你已经需要 2.4G 的内存来保存 300M 这样的项目了。 -
如果每秒查找的次数不是太多并且您不想要很高的吞吐量;我会推荐你尝试 NoSQL 来解决内存问题;并会给出合理的表现。
-
@Dan 我不确定 300M 如何等同于 2.5 GB 内存。我使用 SizeOf 实用程序测量了 1000 万个数据点(整数键和一个包含四个布尔值作为值的对象)的地图大小,结果约为 1 GB。
-
你有多少内存,你打算拥有多大的堆?
-
@Pangea:如果 1000 万个条目需要一个演出,那么 300M 条目需要 30GB,对吧?