㈠ 如何获取 java hashmap占用内存空间大小
反射一下 table[] 这个数组的长度 ,遍历里面所有的Entry链表。
hashmap基本上就是这个数组和里面的Entry里面的占用空间多,(不包括里面key 和 value 的大小)
另外还有几个域 , 占用内存是固定的,可以忽略。
㈡ java map可以放多少数据
map由key value键值对组成,具体放多少数据和你的服务器运行时的内存有关系,同时也和你代码中及时清理无效缓存有关系。
一般编写代码中不会去考虑放多少数据问题,除非你数据量超级大对内存要求比较高。这个时候需要对代码和服务器进行优化
㈢ 如何获取 java hashmap占用内存空间大小
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);
}
㈣ java中开一个8千万大小的map来加载1G左右的文件,大概42000000行,导致内存急剧减小11个G,是什么情况
具体map的结构以及文件的格式?同样的文件有不同的数据机构组织方式,占用内存就是不一样的,而且map要维护hash key,也要额外占用空间