在Java中的内存利用率方面使用Map的缺点

时间:2016-06-15 06:59:51

标签: java

在Java中使用Maps是否有任何缺点(在内存方面)?

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

例如。

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

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

所以我假设每个人都吃了两口。 根据我的地图或任何其他集合持有100咬,所以剩余98咬被浪费。 那么,对于那种情况,我可以使用其他任何东西吗?

2 个答案:

答案 0 :(得分:1)

有关初始容量加载因子的说明,请参阅What is the significance of load factor in HashMap?

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

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

答案 1 :(得分:0)

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

如果我知道收集仍然很小并且我还没有使用这些键,我有时只会使用一个列表,因为无论如何检查2或4个元素是非常快的。最后,在他们占用大量可用内存之前,甚至不用担心这些小事情。