在我的 Java 代码中,我通过以下方式使用 Guava 的 Multimap ( com.google.common.collect.Multimap ):
Multimap<Integer, Integer> Index = HashMultimap.create()
这里,Multimap 键是 URL 的一部分,值是 URL 的另一部分(转换为整数)。现在,我分配我的 JVM 2560 Mb (2.5 GB) 堆空间(通过使用 Xmx 和 Xms)。但是,它只能存储 900 万个这样的(键、值)整数对(大约 1000 万个)。现在,问题是,我只能为 JVM 提供有限的内存(比如 2 GB)。
那么,有谁能帮帮我,
1)是否有另一种方法或自制的解决方案来解决这个内存问题?意思是,基于磁盘/数据库的多映射可以是一个不错的解决方案吗?我从一些网络文章中读到,有一些基于 DB/Disk 的解决方案可以解决这个问题。Berkley DB或Ehcache。谁能告诉我(或哪一个)更快?
2)那些基于磁盘/数据库的多映射是否存在性能问题(我要求存储和搜索)?
3)任何想法或信息如何简要地使用它们。
4)任何其他想法对我来说都会很好。
注意:我想要针对上述问题的 Multimap(键可以有多个值)解决方案。而且我还必须考虑存储和搜索的性能。