如何获取 java hashmap占用内存空间大小

 我来答
匿名用户
2013-08-30
展开全部
java没有sizeofo,,
我参考 http://topic.csdn.net/t/20060224/20/4575988.html写了一个

public static void main(String[] args){
// 创建1000个HashMap
HashMap strA[] = new HashMap[1000];
long start = 0;
long end = 0;
// 先垃圾回收
System.gc();
start = Runtime.getRuntime().freeMemory();
for(int i = 0; i < 1000; ++i)
strA[i] = new HashMap();
// 快要计算的时,再清理一次
System.gc();
end = Runtime.getRuntime().freeMemory();
System.out.println("一个HashMap对象占内存:" + (start - end)/1000.0);
}
匿名用户
2013-08-30
展开全部
使用java.lang.instrument这个包下的Instrumentation这个接口的getObjectSize方法可以实现。
不过比较复杂,详细的得参考API的java.lang.instrument包规范。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
十拿九稳year
推荐于2017-09-04 · TA获得超过6133个赞
知道小有建树答主
回答量:661
采纳率:80%
帮助的人:308万
展开全部
HashMap简介
综述:HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。

1.HashMap
继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。
2.HashMap
的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。
3.HashMap
的实例有两个参数影响其性能:“初始容量” 和 “加载因子”。容量 是哈希表中桶的数量,初始容量 只是哈希表在创建时的容量。加载因子
是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行 rehash
操作(即重建内部数据结构),从而哈希表将具有大约两倍的桶数。
通常,默认加载因子是 0.75,
这是在时间和空间成本上寻求一种折衷。加载因子过高虽然减少了空间开销,但同时也增加了查询成本(在大多数 HashMap 类的操作中,包括 get 和 put
操作,都反映了这一点)。在设置初始容量时应该考虑到映射中所需的条目数及其加载因子,以便最大限度地减少 rehash
操作次数。如果初始容量大于最大条目数除以加载因子,则不会发生 rehash 操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式