【发布时间】:2011-07-10 04:01:52
【问题描述】:
我需要一个非常基本的 Java 键值对存储。我从 HashMap 开始,但似乎 HashMap 的空间效率有点低(我存储了大约 2000 万条记录,并且似乎需要大约 6GB RAM)。
地图是Map<Integer,String>,因此我正在考虑使用 GNU Trove TIntObjectHashMap<byte[]>,并将地图值存储为 ascii 字节数组而不是字符串。
作为替代方案,是否有一个键值存储只需要添加 jar 文件,不会一次将整个映射保存在 RAM 中,并且仍然相当快?
【问题讨论】:
-
只是想评论一下我已经使用 Trove 有一段时间了,它们似乎非常可靠。每当我需要原始键和/或值时,我都会使用它们。
-
ehCache?具有自动溢出到磁盘的功能,并且对于内存中的内容具有类似哈希图的性能。不知道它如何处理 2000 万个进入磁盘的条目。
-
你知道我可以通过 HashMap for Trove 节省什么样的空间吗?