我想使用java来处理最终超过100 GB的数据结构。我需要以1:1的比例写入和读取事物,尽可能每秒多次。在Java形式中,它是一个HashMap>。我可以在磁盘上保存和操作它,就好像它在RAM中一样吗?这可以加倍作为持久性方案吗?
答案 0 :(得分:2)
有“缓存”软件包可以帮到你。 Ehcache浮现在脑海中。它允许您创建一个缓存,在内存中存储有限的对象,并将其他对象溢出到磁盘。这一切都是在幕后完成的,所以你要做的就是从缓存中获取/放置。
答案 1 :(得分:0)
你可以,但你可能想先了解访问模式。如果你要随机搜索一大堆并且你没有使用SSD,那么每个IO都需要等待几毫秒。如果你只是在某些地区寻找,你可能只想把这些部分砸到记忆中。尝试将其数据组织为尽可能集中在您的访问模式上。
答案 2 :(得分:0)
不能在Java中将磁盘文件用作堆。您可以将文件映射到地址空间,但它不会成为堆的一部分;即,您将无法使用它来保存常规Java对象。
最简单的方法(如果你有足够的RAM并运行64位操作系统和64位JVM)就是给JVM一个巨大的堆。但我想这对你来说不是一个选择。所以你可以选择: