Java哈希映射。最多可以使用多少条记录?

Java哈希映射。最多可以使用多少条记录?,java,memory-management,jvm,hashmap,Java,Memory Management,Jvm,Hashmap,我有10000个映射。将它们全部放在java Hashmap和access中是一个好主意吗?这将保存数据库事务,因为所有10000条记录都将出现在内存中。每个映射将有大约100个字符,包括键和值,映射将非常不同。问这个问题是因为我在java或类似情况下没有丰富的经验。10K对象就内存而言是杯水车薪(请原谅这个双关语) 试试看,但我想你会发现,即使是现在最适度的内存容量也能处理它。确保您有一个合理的堆大小:-Xmx512m或任何要映射的元素有多大 这取决于所需元素的大小和JVM上的可用大小,但在大

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

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


试试看,但我想你会发现,即使是现在最适度的内存容量也能处理它。确保您有一个合理的堆大小:
-Xmx512m
或任何要映射的元素有多大


这取决于所需元素的大小和JVM上的可用大小,但在大多数情况下,10000个映射是可行的。

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

  • 创建具有预期容量的HashMap实例,以避免在添加10K项时调整映射的大小
  • 确保您的密钥具有良好的
    hashcode
    和匹配的
    等于
    实现。如果您正在使用字符串之类的东西作为键,那么这已经为您完成了

  • HashMap.size()的返回类型为整数

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

    因此,最多可以存储2147483647个对象

    int->int数据类型是一个32位有符号2的补码整数。它的最小值为-2147483648,最大值为2147483647(含)


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

    HashMaps不在乎您在其中放入了什么;它们在添加新数据时自动展开。虽然你的内存是这样的,但是对于最低端的上网本电脑来说,即使是现在最小的内存也只有1GB左右。谢谢你的输入。因此,如果将来要添加到Hashmap中的记录数量增加到超过其实例化的容量,它实际上将被调整大小,Hashmap仍将继续按其应该的方式工作。对吗?是的,地图继续工作。您将看到的是恒定时间
    put
    操作,直到达到容量并且地图决定调整大小。发生这种情况时,它会分配一个新的(更大的)存储,并将每个现有项插入新存储。它分配了额外的空间,因此您的
    放置
    会再次变快,直到需要再次增长。让它增长通常不是一个问题,但是如果您提前知道要插入一些项目,那么您最好从一开始就分配这么大的项目。