类HashMap,但内存减少到原1/6的实现
来源:互联网 发布:java找工作用什么软件 编辑:程序博客网 时间:2024/06/05 07:11
java中的Map在提供方便实用的同时,也存在内存浪费巨大的问题。当Map中的Entry数量达到1000万 条以上的时候,需要数G的内存空间 .这里提到的Map使用形式为HashMap<String,Byte>,平均每个key在20个字符左右,最多不超过200字符.
在实际情况下,有差不多5/6的内存浪费 在存放实际数据无关的地方.在一些一次写入多次读去的地方,完全没有必要浪费这么多的资源,下面就通过一个简单的实现说明。
算法说明:
按照key的长度信息将所有的entry放进不同的队列中,为了方便此时的entry队列已经排好序,当然也可以加进内存后再排序.
现在有很多的队列了,在查询的时候根据查询词长度选择一个队列,在队列中通过2分法查找.
算法适用性:
适用于key值集中在一定范围,value为简单类型(byte、int、long、float、double等),数据量在百万条以上,内存匮乏的情况.
测试结果:
测试数据为7138595条Entry,分布在250个队列中.
HashMap<String,Byte>的结果:
时间: 3780、3814
内存: 892M
此方法的结果:
时间:5792、5758
内存: 158M
- 类HashMap,但内存减少到原1/6的实现
- ORACLE 实现加载配置到内存中,模仿java的hashmap功能
- 减少Firefox的内存消耗
- 减少QQ的内存占用
- Win8.1减少“为硬件保留的内存”的方法
- 内存池的作用--减少内存碎片
- 将数据取到内存,减少对数据库的访问次数,加快速度
- 减少网站的外链但保留外链资源
- 基于boost实现的共享内存版HashMap
- 减少windows7内存占用的优化方案
- 减少程序内存占用的方法
- Android有效的处理Bitmap,减少内存
- 减少cache memory占用的内存
- 缩小图片的像素减少内存压力
- realloc 减少指针指向的内存
- 如何减少idea的内存消耗
- 如何减少PHP-FPM的内存占用
- 【原】mmap方法实现物理内存…
- 结构体、共用体、枚举
- ZZ字符编码详解及由来(UNICODE,UTF-8,GBK)
- 计算机专业的学生何去何从?
- WordPress摘要插件
- sql里的cast和convert,类型转换函数
- 类HashMap,但内存减少到原1/6的实现
- 反射机制
- JavaScript实现GridView行交替与行选中颜色变化,缺点是加入分页和UpdatePanel后,点击下一页后,功能就消失了
- ORACLE 动态语句
- ArchLinux 源
- Zigbee技术
- 初识SVN(一):什么是SVN
- C# dataset Select(不用每次都访问数据库)【guoyz_1http://blog.csdn.net/guoyz_1】
- 文本分类入门(六)训练Part 3