以高效内存的方式读取一个巨大的Java数字文件



Java中,有一个335Gb大小的文件,每行都包含单独的数字,我需要逐行读取它,就像它是一个数字流一样——我不能把所有数据都保存在内存中。有人告诉我Scanner课程不起作用。你能推荐最好的方法吗?

没有一个java.io输入流类会"将所有数据保存在内存中"。我认为您可以自由选择最适合自己的内容,如BufferedReader或DataInputStream等。

如果您使用BufferedReader,您应该能够在一个线程中获得高达90 MB/s的速度。

您可以使用trick来分解文件并同时读取部分数据,但只有当您的磁盘读取吞吐量较高时,这才有帮助。

例如,您可以一次将335GB的内存映射到内存中,而无需大量使用堆。即使你只有这个内存量的一小部分,这也会起作用。

磁盘子系统的读取传输速率是多少?

相关内容

  • 没有找到相关文章

最新更新