【问题标题】:Disadvantage using Map in terms of Memory Utilization in Java [closed]在Java中的内存利用率方面使用Map的缺点[关闭]
【发布时间】:2016-10-16 03:23:02
【问题描述】:

在 Java 中使用 Maps 有什么缺点(在内存方面)?

因为据我所知,如果您使用的是 HashMaps 或任何其他集合类。

例如。

Map<String , String> map = new HashMap<String, String>();

map.put("id",1);
map.put("name","test123");

所以我假设每一个都用了 2 口。 根据我的说法,地图或任何其他收藏品可容纳 100 口,因此剩余的 98 口被浪费了。 那么,对于这种情况,我可以使用其他任何东西吗?

【问题讨论】:

  • 你的意思是 bytes 吗?

标签: java


【解决方案1】:

初始容量负载系数的描述,见What is the significance of load factor in HashMap?

如果您使用数组,您可能会比使用地图时使用更少的内存。但在大多数情况下,易用性和可读性远比内存使用量重要。

有关HashMaps 内存使用情况的说明,另请参阅Hash Map Memory Overhead

【讨论】:

    【解决方案2】:

    首先,是的,对于非常少量的数据,创建地图会产生一些内存开销。它为给定的负载容量/负载因子创建具有条目包装类的数组。因此,您可能会浪费几个字节,但在千兆字节大小的内存时代,这只会在您创建数百万甚至数十亿地图时成为问题,具体取决于您实际为应用程序提供多少内存以及什么它必须管理的其他事情。

    如果我知道一个集合会非常小,并且无论如何我都不使用键,我有时只使用一个列表来代替,因为无论如何检查 2 或 4 个元素是相当快的。最后,在它们占用大部分可用内存之前,甚至不必担心这些小事情。

    【讨论】:

      猜你喜欢
      • 2010-10-26
      • 2021-03-02
      • 2015-02-13
      • 2016-04-25
      • 1970-01-01
      • 2014-07-30
      • 1970-01-01
      • 2016-05-13
      • 1970-01-01
      相关资源
      最近更新 更多