地图上有100万个字符串

时间:2016-01-21 15:08:37

标签: java memory heap-memory

我想知道像这样的地图的总大小

Map<String, String> map = new HashMap<>();
map.put(string1, string1);
map.put(string2, string2);
//many more lines following until 1 million entries populated to map

如您所见,键和值始终指向相同的字符串,并且每个字符串保证为24个字符长,仅包含小写字母和数字(0-9)。对于长期查找表,存储这个地图(在我假设的堆中)是否可行?这张地图的大小有多大?

3 个答案:

答案 0 :(得分:0)

假设您的计算机有足够的可用内存,是的。 hashmap可以存储超过10亿个条目(2 30 == 1073741824)。

答案 1 :(得分:0)

如果要查看Java中对象的大小,可以查看以下问题:

Calculate size of Object in Java

In Java, what is the best way to determine the size of an object?

您还可以使用分析工具查看运行时的大小。 VisualVM,Java Flight Recorder或Java Mission Control

答案 2 :(得分:0)

您好如果您好奇Java应用程序正在消耗多少内存,请尝试使用java visual vm。如果您将JDK放在它的bin文件夹中。

至于你的问题,这是一个非常糟糕的主意(如果它不用于测试目的),它将存储(地图的大小)*(每个字符串中有24个字符)*(2个字符的char), 因为你的键和值总是相同的而且String是不可变的(所有相等的字符串指针都指向内存中的同一个对象)。