【发布时间】:2011-07-06 02:17:12
【问题描述】:
在添加任何元素之前,我如何知道预先确定大小的 HashMap 占用了多少空间?例如我如何确定以下占用多少内存?
HashMap<String, Object> map = new HashMap<String, Object>(1000000);
【问题讨论】:
-
为什么,创建地图时不需要
? -
@Travis:哇,冷静!我没有阻止他做任何事情,只是问他想做什么,以便我们可以更好地帮助他。
-
抱歉代码错误。在使用不同的集合/地图管理大量数据时,我正在测试性能。快速插入快速检索基于出色的哈希算法且无需重新哈希。
-
hashmap 不是现在的结构,现在没有什么大的应该由单核管理;回答您的问题 - 每个条目 1048576*8+ 48。请记住 HashMap 会“扰乱”位并使用 pow2 表(无素数),因此散列函数可能不是很好。放置时的分配总体而言是高昂的成本,无论是占用空间还是性能(由于额外的间接性,在获取时也是如此)
标签: java hashmap memory-management