【发布时间】:2016-01-02 18:33:58
【问题描述】:
我最近刚刚被问到一个面试问题,该问题旨在处理读取 CSV 文件并总结某些单元格中的条目。当被要求对其进行优化时,我无法回答如果给我们一个大小为 100 gigs 的 CSV,如何处理内存不足的情况。
在 Java 中,从文件中读取究竟是如何工作的?我们怎么知道什么时候太大了?我们如何处理?有人告诉我,您可以传入中间阅读器对象,而不是尝试阅读整个内容?
【问题讨论】:
-
一次处理一行。
-
您执行类似this 的操作,但不是附加到 StringBuilder,而是在现场进行求和计算。试图将整个输入文件存储在内存中会导致麻烦。