3

我有 10,000 个映射。将它们全部放在 java Hashmap 中并进行访问是个好主意吗?这将保存数据库事务,因为所有 10,000 条记录都将存在于内存中。每个映射将有大约 100 个字符,包括键和值,并且映射将非常不同。问这个问题是因为在 Java 或类似情况下没有丰富的经验。

4

4 回答 4

7

就内存而言,10K 个对象只是杯水车薪(请原谅双关语)。

试试看,但我想你会发现即使是现在最普通的内存容量也能应付。确保你有一个合理的堆大小:-Xmx512m或其他

于 2013-07-24T02:40:48.860 回答
1

应该不是问题。需要注意的事项:

  1. 创建具有预期容量的 HashMap 实例,以避免在添加 10K 项目时调整地图大小。
  2. 确保您的密钥具有良好hashcode且匹配的equals实现。如果您使用字符串之类的东西作为密钥,那么这已经为您完成了。
于 2013-07-24T02:43:37.080 回答
1

HashMap.size() 的返回类型是整数。

int HashMap.size() (返回此映射中键值映射的数量。)

因此,您最多可以存储 2,147,483,647 个对象。

int -> int 数据类型是一个 32 位有符号二进制补码整数。它的最小值为 -2,147,483,648,最大值为 2,147,483,647(含)。

要将最大值存储到地图中,您需要增加堆大小(取决于您的需要)。

于 2013-07-24T03:57:06.293 回答
0

你要映射的元素有多大?

这取决于您想要的元素大小和 JVM 上的可用大小,但在大多数情况下,拥有 10,000 个映射是可行的。

于 2013-07-24T02:42:01.030 回答