呵呵,一个你可能从没关心过得关于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空间。
当然,我没想通过这篇文章说什么,这只是一个小故事...小故事...而已
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空间。
当然,我没想通过这篇文章说什么,这只是一个小故事...小故事...而已
相关文章推荐
- 关于MMC不能打开文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC可能是由于文件不存在,不是一个MMC控制台,或者用后来的MMC版
- 关于MMC不能打开文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC可能是由于文件不存在,不是一个MMC控制台,或者用后来的MMC版
- 一个加湿器的故事或者一个关于加湿器的故事
- 关于MMC不能打开文件C:\Program Files\Microsoft SQL Server\80\Tools\Binn\SQL Server Enterprise Manager.MSC可能是由于文件不存在,不是一个MMC控制台,或者用后来的MMC版本创建。也可能你没有访问此文件的足够权限
- 关于MMC不能打开文件C:\Program Files\Microsoft SQL Server\80\Tools\Binn\SQL Server Enterprise Manager.MSC可能是由于文件不存在,不是一个MMC控制台,或者用后来的MMC版本创建。也可能你没有访问此文件的足够权限
- 关于MMC不能打开文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC可能是由于文件不存在,不是一个MMC控制台,或者用后来的MMC版
- 关于MMC不能打开文件C:\Program Files\Microsoft SQL Server\80\Tools\Binn\SQL Server Enterprise Manager.MSC可能是由于文件不存在,不是一个MMC控制台,或者用后来的MMC版本创建。也可能你没有访问此文件的足够权限
- 【摘取】敏捷测试,用户故事:一个关于“删除购物车中的某些商品”的故事评估的实例
- 一个关于xbody的古老故事
- .NET委托:一个关于C#的睡前故事
- hdu 1540 Tunnel Warfare 一个关于线段的故事~~~线段树是我无法言明的伤~
- HashMap,HashTable,TreeSet,ArrayList的一个例子(转帖)
- 今天老大要我们写一个关于个人绩效的报告,呵呵,觉的下面老兄的写的不错。
- 【Android Developer】1.一个关于Android机器人的故事
- 关于Java的数据结构HashMap,ArrayList的使用总结及使用场景和原理分析
- 一个关于中国菜的故事
- 《择天记》--一个关于改命的故事
- 关于Android中为什么主线程不会因为Looper.loop()里的死循环卡死?引发的思考,事实可能不是一个 epoll 那么 简单。
- .NET委托(一个关于C#的睡前故事)
- 错误提示之(MVC3.0):HTTP 404。您正在查找的资源(或者它的一个依赖项)可能已被移除,或其名称已更改,或暂时不可用。请检查以下 URL 并确保其拼写正确 MVC误设起始页