【发布时间】:2023-04-01 04:00:02
【问题描述】:
我在非常大的文件(~100g)上使用BufferedReader 和FileReader。
这是我正在使用的代码:
BufferedReader reader = new BufferedReader(new FileReader("file path"));
BufferedWriter writer = new BufferedWriter(new FileWriter("output file"));
String line;
while ((line = reader.readLine()) != null) {
// check if i need this line, and if i need it, i print it
writer.write(line);
writer.newLine();
}
writer.close();
reader.close();
当我一开始在我的文件上运行它时,它使用的内存量很少,但使用的内存会慢慢增长(很容易使用超过 50GB 的 RAM)。
为什么会这样?而且,我能以某种方式解决它吗?
【问题讨论】:
-
你对这些线条做了什么?
-
@JonSkeet 我更新了我的问题。我取每一行并按制表符拆分(我的文件是制表符分隔的),并检查我是否需要这一行,然后使用 BufferedWriter 将其打印到输出文件中。
-
你没有保存任何部分?如果您可以在此处提供minimal reproducible example 会有所帮助,以便我们可以尝试重现它。 (以及对文件中内容的粗略了解,因此我们可以生成类似的内容。)
-
50g 内存?你在那里配置了多少堆?您所说的“已用内存”到底是什么意思?
-
不要在您的问题中编辑答案/解决方案,而是创建一个答案帖子。然后不要在标题中写“已解决”,而是接受解决您问题的答案。并解释您如何使用
-Xmx参数。可能传递的值设置不正确。
标签: java bufferedreader filereader