我有一个scala hashmap,它由一个应用程序生成并由另一个应用程序使用。 hashmap很大,比如100MB或更大。
var actMap = new collection.mutable.HashMap[String, Seq[Object]];
目前整个地图在第二个应用程序启动时被加载到内存中。我试图只是在内存中加载密钥,稍后在地图中查找密钥时,它应该给出存储的值。磁盘。反正有没有实现这个目标?如果使用标准序列化,单独保存每个值并即时访问它们将花费大量时间。有哪些替代方案?
答案 0 :(得分:3)
您可能想要考虑使用内存映射文件。你可以自己动手。
假设您可以稍微更改界面并使用第三方库,您可以查看
http://software.clapper.org/javautil/api/org/clapper/util/misc/FileHashMap.html
https://github.com/bmc/javautil/blob/master/src/main/java/org/clapper/util/misc/FileHashMap.java