1

我想使用 java 来处理最终超过 100 GB 的数据结构。我需要以 1:1 的比例从事物中读写,每秒尽可能多的次数。在 Java 形式中,它是一个 HashMap>。我可以像在 RAM 中一样在磁盘中保存和操作它吗?这可以兼作持久性方案吗?

4

3 回答 3

2

这里有“缓存”包可以帮助你。想到了 Ehcache。它将允许您创建一个缓存,该缓存在内存中存储有限的对象,并将其他对象溢出到磁盘。这一切都是在幕后完成的,所以您所要做的就是从缓存中获取/放入。

于 2012-08-16T03:18:11.860 回答
0

你可以,但你可能想先了解访问模式。如果您正在随机寻找很多并且您没有使用 SSD,那么您将需要等待每个 IO 毫秒。如果您只在某些区域内寻找,您可能只想将这些部分放入内存中。尝试将其数据组织成尽可能集中在您的访问模式上。

于 2012-08-16T01:15:36.713 回答
0

不,您不能在 Java 中将磁盘文件用作堆。您可以将文件映射到地址空间,但它不会成为堆的一部分;即,您将无法使用它来保存常规 Java 对象。

最简单的方法(如果你有足够的 RAM 并且运行 64 位操作系统和 64 位 JVM)是​​简单地给 JVM 一个巨大的堆。但我想这不是你的选择。所以你的选择将是:

  • 使用传统数据库
  • 为 Java 使用现有的现成数据缓存产品
  • 尝试滚动您自己的数据缓存。
于 2012-08-16T02:03:25.480 回答