您的位置:首页 > 其它

呵呵,一个你可能从没关心过得关于HashMap或者ArrayList的小故事

2013-11-21 14:55 225 查看
这个故事是这样的:

Java的Runtime类中有三个方法:

freeMemory(),totalMemory()和maxMemory()

这三个方法代表的意思是:

当前应用程序申请的可用内存还有多少

当前应用程序已经申请的内存有多少

当前应用程序可申请的总内存有多少

我们创建一个包含一百万条Integer对象的HashMap

HashMap hm1 = new HashMap<Integer, Integer>;

for (int i = 0; i < 1000000; ++i){

hm1.put(i, i);

}

已知一个int是4字节,一条记录键值对是两个int就是8字节,所以一百万条记录应该是1百万*8字节即8M







我们通过Java的Runtime输出内存看看这个包含百万条Integer的HashMap竟然使用了65M空间

而同样多的数据,即两百万条Integer的ArrayList也用掉了41M空间。

当然,我没想通过这篇文章说什么,这只是一个小故事...小故事...而已
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐