如何解决在没有标准Java库的情况下使用较低的RAM大小进行大量数据处理
在一项技术讨论中,有人问我针对以下情况的解决方案,而不使用任何处理类似情况的标准Java库
- 如何处理不适合JVM可用内存的数组
- 您如何处理一个20 GB的大文件,而该文件无法容纳可用内存。
我可能会想到以下解决方案
- 获取数组的长度并使用长度的一部分进行处理(对于长度为4的数组进行4次迭代) 可以使用split命令(或在各自的OS环境中类似的东西)将
- 原始文件分为多个部分。处理单个较小的文件并生成中间结果(例如,数据聚合)。一旦完成了单个文件处理,然后根据中间结果文件的最终大小,一次性处理所有结果文件,或再次应用迭代处理。
但是我想知道是否有更好的方法。另外,如果此类问题不适用于本论坛,请让我知道,我将删除该问题。 虽然我找到了一些带有解决方案的google文章,但是它谈到了一些图书馆已经提供的解决方案,因此将其发布在这里。
解决方法
一种解决方案可能是堆外内存。可以映射到直接内存或磁盘。你可以在这里得到一些启发 https://mechanical-sympathy.blogspot.com/2012/10/compact-off-heap-structurestuples-in.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。