gpt4 book ai didi

Java PrintWriter 内存消耗大

转载 作者:行者123 更新时间:2023-12-02 12:00:27 25 4
gpt4 key购买 nike

我正在尝试从数据库写入一个大文件文本,大约 200 万行。我观察到,当 PrintWriter 打印 (println()) 行时,文件大小始终为 0 字节。流关闭后文件具有大小数据。它导致所有数据首先保存在内存中,并在流关闭时释放它。就我而言,消耗 100 万数据 +- 2.5GB 内存后。应用程序崩溃。是否可以实时写入数据并防止内存消耗?

这是一个例子:

    File file = new File("file.txt");

PrintWriter out;

out = new PrintWriter(new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream(file)), "UTF-8"));

for (int i=0; i < 9999999; i++){
out.println("some data here");
}
out.close();

最佳答案

您已创建 PrintWriter没有自动行刷新,因此内容将被缓冲,直到您调用 flush()close()。由于您不想刷新每一行(这很慢),因此您可以每 N 行执行一次刷新

for (int i=0; i < 9999999; i++){
out.println("some data here");
if(i % N == 0)
out.flush();
}

使用不同的 N 值进行尝试,看看性能如何变化。

关于Java PrintWriter 内存消耗大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47292525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com