在没有标准Java库的情况下使用较低的RAM大小进行大量数据处理

问题描述

在一项技术讨论中,有人问我针对以下情况的解决方案,而不使用任何处理类似情况的标准Java库

  1. 如何处理不适合JVM可用内存的数组
  2. 您如何处理一个20 GB的大文件,而该文件无法容纳可用内存。

我可能会想到以下解决方

  1. 获取数组的长度并使用长度的一部分进行处理(对于长度为4的数组进行4次迭代)
  2. 可以使用split命令(或在各自的OS环境中类似的东西)将
  3. 原始文件分为多个部分。处理单个较小的文件生成中间结果(例如,数据聚合)。一旦完成了单个文件处理,然后根据中间结果文件的最终大小,一次性处理所有结果文件,或再次应用迭代处理。

但是我想知道是否有更好的方法。另外,如果此类问题不适用于本论坛,请让我知道,我将删除该问题。 虽然我找到了一些带有解决方案的google文章,但是它谈到了一些图书馆已经提供的解决方案,因此将其发布在这里

解决方法

一种解决方案可能是堆外内存。可以映射到直接内存或磁盘。你可以在这里得到一些启发 https://mechanical-sympathy.blogspot.com/2012/10/compact-off-heap-structurestuples-in.html