Java - 非常大的队列(对于Heap而言太大)

时间:2016-02-23 02:47:06

标签: java algorithm data-structures heap large-data

我正在研究一种使用非常大的队列的算法。对于除玩具问题以外的所有问题,它太大而无法装入堆中。作为一个队列,这很好:性能仅取决于前N个条目(出队)和最后N个条目(入队),因此将所有中间保留在磁盘上是可以的。是否有可以执行此操作的库或中间件?如果没有,我该如何实施呢?

我可以使用RDBMS但是,这是一种算法,我需要非常快速地访问入队和出队,所以我不想使用传统的RDBMS。

1 个答案:

答案 0 :(得分:1)

许多数据库可以盈利地使用尽可能多的内存 - 在您抱怨它们太慢之前对代码进行概要分析。还要考虑使用非RDBMS存储,例如REDIS。

如果您决定自己实施,可以通过在(巨大的)circular buffer之上实施mmaped file来构建自己的磁盘备份Dequeue。您将从指向读写区域的单个MappedByteBuffer开始;当这些区域进一步分开时,您将开始保持两个不重叠的MappedByteBuffer指向写端和读端。