内存优化问题

amdgaming 2013-08-20 09:38:56
我有一个hashmap
key是从key1到key200000,
而每一个key对应的value一个是1到10000的中随机的30个数字,不重复,
比如这样:

key1:数组[1,2,3,....30]
key2:数组[2,4,5,6,9,100,33 共30个数字]

前提是我现在要查询是通过key来找那个数组

现在的vaule应该是重复存储,有没有办法不怎么降低查询速度的情况下

降低存储需要的空间,请各位支招,谢谢!
...全文
211 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
无聊找乐 2013-08-20
  • 打赏
  • 举报
回复
引用 6 楼 amdgaming 的回复:
使用享元模式 意欲和解?
欲知详情,请参考设计模式之享元模式
amdgaming 2013-08-20
  • 打赏
  • 举报
回复
使用享元模式 意欲和解?
无聊找乐 2013-08-20
  • 打赏
  • 举报
回复
使用享元模式
lkq_david 2013-08-20
  • 打赏
  • 举报
回复
不晓得,但是帮顶下,期待大神……
amdgaming 2013-08-20
  • 打赏
  • 举报
回复
引用 1 楼 preferme 的回复:
value值,从1~1W,可以考虑,用short型来保存value值,比采用int型,节省一半的空间。 key值,从1~20W,如果每个key是从1连续排列到20W ,那么,可以不使用hashmap而直接使用数组; 映射关系由键值对变成下角标。
其实value数组的值现在 最大是 20万 ,最小是几万,不连续 以后会递增 key值,从1~20W, 这个不连续 现在是20万个
冰思雨 2013-08-20
  • 打赏
  • 举报
回复
value值,从1~1W,可以考虑,用short型来保存value值,比采用int型,节省一半的空间。 key值,从1~20W,如果每个key是从1连续排列到20W ,那么,可以不使用hashmap而直接使用数组; 映射关系由键值对变成下角标。
Neil_Zhao 2013-08-20
  • 打赏
  • 举报
回复
随机数据本身没有办法压缩了,使用short可以改善单个数据的占用,但是不能从根本上解决问题。 建议使用key-value型的内存数据库,如berkeley db,或者SQLite之类的嵌入式数据库。 如果对性能要求不高,也可以考虑利用memory-mapping file自己构建一个工具。 最好是使用key-value型的内存数据库,我自己就是这么处理的。
fearlessMore 2013-08-20
  • 打赏
  • 举报
回复
引用 8 楼 hippoppower 的回复:
注意能被垃圾回收就可以了吧 储存空间...现在系统应该很少在乎这个
嗯关键是不能使得 没用的资源占着不能被当做垃圾收回,你的程序内存就很容易泄露了(heap over)
hippoppower 2013-08-20
  • 打赏
  • 举报
回复
注意能被垃圾回收就可以了吧 储存空间...现在系统应该很少在乎这个

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧